为什么人们使用命令行而不是IDE?

9 c++ ide command-line

嗨,我正在学习C++,并在一开始使用命令行...然后我开始使用Xcode(从那时起无法切换回命令行),只是想知道使用命令行的一些具体原因/情况而不是IDE ...

Mar*_*ett 31

对大型系统更有效 - 尝试打开包含100个项目和10,000个文件的VS解决方案.

对于很多任务来说比较简单,你可以在一个窗口中编辑,在另一个窗口中运行make,在第三个窗口中使用gdb.

如果每个人都有gcc和vi(或emacs),则更容易自动执行任务,通常更容易在团队或跨平台工作

  • @Miguel,你低估了BASH,find,grep,xargs,awk,sed和所有其他UNIX命令的强大功能.当然,你在Windows命令行上的效率非常低,这绝对很糟糕,但在任何UNIX版本中,BASH +自动完成+ UNIX实用程序将在功耗和速度方面击败任何GUI. (11认同)
  • 为什么要将100个项目放在一个解决方案中?(不是你应该/应该做的事情)此外,你认为从命令行管理100个项目和10k文件会更容易吗?我想不是.如果有什么IDE会让你的效率提高10k倍:-) (10认同)
  • +1确切地说,我的工作流程主要包括在窗口之间切换(使用[GNU Screen](http://www.gnu.org/software/screen/))并按下uparrow-enter. (8认同)
  • 先?他们还没有安装PS的客户系统怎么样?在*nix世界中不是一个问题,你需要的已经存在. (4认同)
  • @Michael:Windows现在带有PowerShell,它实际上领先于我尝试过的所有Unix cmd shell(bash,csh,tcsh). (3认同)
  • PowerShell似乎很好,但谁知道如何使用它?关于UNIX脚本/ bash必须有几千个教程,但不是PS. (3认同)

Jon*_*vis 14

对我来说最重要的是编辑.我真的很喜欢vim,并且很少有IDE具有良好的vim仿真 - 特别是因为我使用dvorak并且必须重新映射很多密钥.对于很多其他人来说,除了他们选择emacs之外,他们会说同样的话.

与vim或emacs相比,大多数IDE编辑都很苍白.有些功能你错过了或者很难很好地工作.例如,ctags肯定可以帮助你跳到vim中的函数定义,但它远远不如许多IDE可以做的那么好,因为它们实际上理解了语言.,当然,调试器集成和项目管理等是不打算在VIM或Emacs,因为他们没有完全成熟的IDE,以及工作(虽然你可以做很多的东西与他们).但通常情况下,vim或emacs的强大功能会掩盖IDE对它们的影响.

此外,就命令行编辑而言,当您无法访问具有GUI的环境时,它们可以在命令行上运行,因此在很多情况下,这种灵活性是一个很大的优势.

当然,如果你能将vim或emacs的所有强大功能与一个完整的IDE结合起来会很棒 - 并且有一些尝试这样做 - 但它总是有问题,甚至最好的尝试都是远非完美.因此,您经常会遇到vim或emacs的选择以及它们带来的功能或带有它带来的功能的IDE.

编辑:进入为什么vim或emacs在许多方面比你的典型IDE可能会变得非常冗长,并且已经有几个关于SO的问题.

这是Emacs的一个伟大的回答:/sf/ask/2506661/#35929

这是一篇关于vi的好文章,似乎经常与之相关:http://www.viemu.com/a-why-vi-vim.html

为了快速尝试我提供一些理由,为什么vim更强大:

从文本编辑的角度来看,典型的IDE基本上是一个加强的记事本.您键入文本并使用鼠标进行导航(虽然有时非常有用,但它可能比使用键盘慢得多).他们添加了特定于代码的功能,如代码完成,自动代码缩进,跳转到函数定义的能力,重构工具等等(因此IDE可以如此有用)但是他们的基本文本编辑功能通常很差.他们可能会添加一些有用的功能,比如ctrl-d来删除一行,但是与你在vim或emacs中获得的内容相比,他们添加的内容通常非常有限.

以删除(一个非常基本的操作)为例.在vim中,您可以对任何动作命令使用删除操作,从而可能有大量的删除方法.

  • dd 删除整行.
  • 5dd 删除5行.
  • dj 向上移动光标,删除当前行左侧的所有内容以及上面一行右侧的所有内容.
  • dG 从此处删除所有内容,直到文件末尾.
  • 7dgg 删除此处和第7行之间的所有内容.
  • d% 移动到匹配下一个支撑或支撑的支撑或支撑(以先到者为准)并删除此处和此处之间的所有内容,包括您跳到的支撑或支撑
  • dw 删除此处与单词的下一个开头之间的所有内容
  • de 删除此处和单词的下一个结尾之间的所有内容
  • D 删除此处和行尾之间的所有内容
  • d0 删除此处和行首之间的所有内容
  • d^ 删除此处和行上第一个单词的开头之间的所有内容
  • dty 删除此处与此行中下一次出现y之间的所有内容(如果此处与行尾之间没有y,则删除任何内容)

这个清单一直在继续.这只是为了删除.其他基本命令的完整列表也是如此.这只是基本的命令.有许多更多的命令更先进,功能更强大.Vim可以做很多事情,大多数使用它的人只使用它能力的一小部分.

大多数IDE甚至没有这种编辑功能的一小部分.他们有许多其他特定于编程和特定于语言的功能,vim和emacs要么缺乏,要么更难以开始工作 - 例如良好的,上下文敏感的代码完成,重构工具,项目管理等.但是对于文本编辑功能,大多数IDE都无法比较.

  • @Michael - xcode编辑器令人厌恶 - 而且它正在与几乎所有其他编辑器(IDE或命令行)进行比较.我使用可用的工具,并试图远离宗教问题(现场直播)但可以说,毫无疑问,当前"最差"的编辑器存在于xcode中:) (2认同)