为什么人们使用命令行而不是IDE? 我正在学习C++,开始时使用了一个命令行…然后我开始使用Xcode(从那时起就无法切换回命令行),我只是想知道使用命令行而不是IDE的一些具体原因/情况…

为什么人们使用命令行而不是IDE? 我正在学习C++,开始时使用了一个命令行…然后我开始使用Xcode(从那时起就无法切换回命令行),我只是想知道使用命令行而不是IDE的一些具体原因/情况…,c++,command-line,ide,C++,Command Line,Ide,当您想要自动化软件构建时,您使用命令行。这通常是在您准备发布软件时完成的,并且在将软件交付给用户之前,您还需要执行其他操作,如安装程序打包以及软件编译 除此之外,您应该始终使用IDE进行调试、编译和代码编辑 大型系统的效率更高- 尝试打开一个包含100个项目和10000个文件的VS解决方案 对于很多任务来说更简单,在一个窗口中编辑,在另一个窗口中运行make,在第三个窗口中使用gdb 如果每个人都有gcc和vi(或emacs),那么更容易自动化任务,通常更容易在团队或跨平台中工作。编辑器是我的一

当您想要自动化软件构建时,您使用命令行。这通常是在您准备发布软件时完成的,并且在将软件交付给用户之前,您还需要执行其他操作,如安装程序打包以及软件编译


除此之外,您应该始终使用IDE进行调试、编译和代码编辑

大型系统的效率更高- 尝试打开一个包含100个项目和10000个文件的VS解决方案

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


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

编辑器是我的一大选择。我真的很喜欢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强大得多,可能会有相当长的篇幅,并且已经有几个问题涉及到这一点

这是关于emacs的一个很好的答案:

这是一篇关于vi的好文章,似乎经常链接到:

对于我来说,快速尝试给出vim更强大的一些原因:

从文本编辑的角度来看,典型的IDE基本上是一个增强的记事本。您可以键入文本并使用鼠标四处导航(这有时非常有用,但可能比仅使用键盘慢一些)。他们添加了代码特定的功能,如代码完成、自动代码缩进、跳转到函数定义的能力、重构工具等(这就是IDE如此有用的原因),但他们的基本文本编辑能力通常相当差。他们可能会添加一些有用的特性,比如ctrl+d来删除一行,但与vim或emacs相比,他们添加的功能通常非常有限

以删除(一个非常基本的操作)为例。在vim中,您可以将delete操作与任何运动命令一起使用,从而产生了数量惊人的删除方式

  • dd
    删除整行
  • 5dd
    删除5行
  • dj
    向上移动光标,删除当前行左侧的所有内容以及上面一行右侧的所有内容
  • dG
    从这里删除所有内容,直到文件结束
  • 7dgg
    删除此处和第7行之间的所有内容
  • d%
    移动到与下一个括号或括号(以先到者为准)匹配的大括号或括号,删除此处与此处之间的所有内容,包括跳转到的大括号或括号
  • dw
    删除此处和单词下一个开头之间的所有内容
  • de
    删除此处和单词下一个结尾之间的所有内容
  • D
    删除此处和行尾之间的所有内容
  • d0
    删除此处与行首之间的所有内容
  • d^
    删除此处与行中第一个单词开头之间的所有内容
  • dty
    删除此处与此行上下一次出现的y之间的所有内容(如果此处与此行末尾之间没有y,则不删除任何内容)
这一清单不胜枚举。这只是为了删除。其他基本命令的整个列表也是如此。这只是基本的命令。还有很多很多更高级、更强大的命令。Vim可以做很多事情,以至于大多数使用它的人只能使用它功能的一小部分


大多数IDE甚至没有这种编辑功能的一小部分。vim和emacs缺乏或更难使用其他许多特定于编程和特定语言的功能,如良好的上下文相关代码完成、重构工具、项目管理等。但对于文本编辑功能,大多数IDE无法进行比较。

命令行构建可以自动化,并且使用标准工具(例如用于命令行构建的工具)可以跨平台构建这些构建(注意,您可以使用命令行构建Xcode项目,但这仅适用于带有Xcode的Mac OS X)。自动化非常重要,b