为什么Emacs / Vim / Textmate? Xcode不够好吗?

您好我主要做C + +,Objective-C编程。 我发现Xcode加上一个自动完成/macros插件(Completion Dictionary)相当充足。

但是,所有的人似乎都赞扬他们纯粹的文本编辑。 我试了一下Textmate, 喜欢它的简单性,但不喜欢它的文件/框架处理。

我在这里错过了什么? 或者,Vim或Emacs的自动完成和Xcode一样好吗?

拉一把椅子儿,让我谈谈这个。

在Xcode的日子之前,有VIM和Emacs。 我知道这很难想象,但这是事实。

很多人习惯了VIM / Emacs,并继续使用它。

Emacs是非常可定制的,并且提供了几乎所有你能想象到的东西(包括内置的收缩和河内的塔楼)。 您可以轻松地从Emacs调用编译器,并根据需要创build您自己的扩展。

VIM拥有令人难以置信的正则expression式引擎(Emacs也是如此),非常方便,因为(VI)几乎适用于所有的Unix操作系统,并且如果没有方向键(真的是老派),它的function非常强大。 人们非常善于使用键来移动文件,而不必使用鼠标。

Emacs也是如此,但是对于我来说,我发现VIM上的光标移动更容易。

文本编辑器的战争是与Mac和PC战争一样激烈的宗教狂热,答案是挑选最适合你的。 如果你喜欢Xcode,太棒了,继续使用它,但如果你被迫在PC或Linux机器上工作,祝你好运。 就个人而言,我使用Emacs编码,VIM操纵文本和Firefox浏览lolcats。

我真的不明白为什么emacs在人们讨论文本编辑器的时候提供支持。 根据我的经验,它比eclipse更像eclipse(或其他平台/ IDE之一),因为它一个环境 ,恰好擅长文本编辑。

作为一个IDE emacs的function版本控制,实时编译,拼写检查,自动完成,debugging,代码浏览等等各种各样的SDKs。 对于其余的计算需求,它是一个电子邮件/新闻/networking/ irc / twitter / xmmp客户端,日历,组织者,计算器,terminal模拟器,远程编辑,电子表格,游戏等。

在Dijkstra之后:“Emacs不再是文本编辑而是天文学是关于望远镜的”

你所缺less的是Emacs和Vim实际上是IDE。

vi在UNIX系统上无处不在,而Emacs几乎如此。 AFAIK,Xcode是在一个平台上。

拥有一个强大的IDE是一件好事,但每个人都应该有一些技巧来保持它们在任何可能被投入的平台上的function。

这完全取决于你的偏好。

有些人喜欢使用像(g)vim,emacs,pico等轻量级文本编辑器。其他人喜欢使用像MS Visual Studio,Eclipse,Xcode这样的IDE。

只要您的环境与文本编辑技术兼容,这完全取决于您。

顺便说一下,我喜欢使用Eclipse和vim,因为它们是我用来学习编程的东西;)

你认为人们喜欢Emacs / Vim的主要原因是代码完成。 像Emacs / Vim这样的人,他们都是用来编辑文本的。 你有其他编辑没有的控制和选项。 一旦你真的很擅长使用这些程序之一,你希望这些键绑定/命令到处可用。 macros,正则expression式,search/词/段落/function,与版本控制接口,复杂的撤销/重做和复制/粘贴function和扩展选项四处移动,这些编辑真的很好。

代码完成只是使编程编程更容易的许多事情之一。 Emacs / Vim可以处理所有这些(本地或exntensions)。

不,不是。 这是一个真正的偏好问题。 我喜欢在Visual Studio 6中工作,但现在新版本太膨胀了。 所以如果我可以在VS之外做一些事情,我通常不需要打开整个IDE盒子。

在Windows上,我喜欢notepad2和gvim。 我已经定制了vim到完全适合我需求的地步,所以我不必考虑什么和在哪里。

但是,有一点很好(你也可以通过阅读这些post来了解它),很多用户使用vim / emacs / …因为听说过它最好的/酷的因素/实际可用性。 所以,如果它不适合你,不要使用它。 没有人会看你这个错误的原因。

对我来说,最重要的两个特点是:

  • Emacs键绑定,因为这是我的手指兼容。

  • 开源,为它提供的自由。 绑在一个平台是诅咒。

现在我主要使用Eclipse进行编程(设置为Emacs键绑定)和FSF Emacs来阅读邮件和偶尔使用LaTeX。

我个人喜欢emacs。 我用过vim和一些IDE。 Vim和emacs都有很好的社区,人们愿意为任何语言编写function代码。 我不知道任何支持Haskell的IDE。 这一切都取决于对你重要的事情。 两者都有扩展语言,虽然海事组织,emacs lisp是两个更好的。 忽略鼠标的能力也是我喜欢的主要事情。 许多IDE也具有emacs和vim兼容模式或扩展function。 他们都有很大的时间投资,但都是值得的。 迟早你会select适合你的vim / emacs / IDE,然后坚持用它来提高你的技能。

当您使用Emacs时,您可以安装Cedet或Autocomplete软件包以使用某些语言的名称完成(C ++非常好,而Obj-C仍然不受支持),除了丰富的编辑器function

emacsfunction强大。 我在vimpluse.el中使用了emacs,这样我就可以将vim的键绑定到所有的emacsfunction上。

我主要使用Vim作为input模型。 一旦你精通了input模型,回到编辑器,你不得不使用鼠标感觉笨拙,并最终(至less对我来说)刺激。 键入“ci”来改变两个单引号之间的所有文本,然后把你的手从首行中取出,用鼠标find并select文本,最后点击“删除”,效率会更高。

我只是简单地使用了Emacs,而我更喜欢Vim,我嫉妒它的一些function。 但是我最终select了Vim,因为我发现了Emacs使用的和弦input模型,可以在手指上施加不必要的压力。

我有Xcode和TextMate,我不使用它们,虽然我知道它们可以非常强大。 相反,我使用Vim(或MacVim,如果你喜欢)。 为什么?

因为它轻,快,上瘾,强大,可定制……我可以继续这么长时间,但最重要的是,我可以用Vim做所有我想做的事情。

无论您使用哪种编辑器,最好的编辑器都是您(几乎)完美掌握的编辑器。

TextMate对我来说感觉更轻松。 closures我的头顶上:

  1. 它支持在文件内的文件和方法之间跳转。 想想Quicksilver的文件/方法。 打开一个文件进行编辑,点击command-shift-t打开一个浮动面板,列出文件中的所有方法。 开始input,列表过滤掉。 select你想要的方法,然后按回车跳到它。 Xcode有这样的东西,但刺的匹配是更多的文字。

  2. 很多内置的文本扩展。 键入一个触发器,然后点击标签将其展开。 例如,在一个新行上键入m,然后按Tab键为您创build一个方法。 然后,制表符键智能地跳转到插入文本的各个部分,以便您可以对其进行编辑。 这是如此巨大的时间,这是荒谬的。

  3. 漂亮的插件支持Subversion和Git。 也许还有其他的VCS。

  4. 完成(如Xcode)和历史。 TextMate允许您基本上完成文件中存在的任何文本。 所以一旦你input一个variables名或方法调用一次,你可以使用tab来自动完成它在同一个文件中的任何地方。

  5. 智能过去的董事会与历史,良好的内置比较,主题支持,良好的键盘支持,文件和跨项目查找(与RegEx),可能更多,我忘了。

无论如何,这对我来说已经足够了。

我很长一段时间使用vim用户,并发现我真的很喜欢科莫多编辑Vim仿真打开。 因此,我得到了vim密钥绑定的所有便利(我已经习惯了这样的习惯,即最近生成的最近的MS Word文档中不less于三个:“w”)以及良好实现的代码完成C ++,Python,JavaScript等

我不使用XCode,因为我没有非常开发OS X特定的应用程序,所以OS X框架集成的好处还不足以超过没有vim键绑定的成本,并且“按照我们的方式或者根本就不是“苹果走向发展的道路。

Xcode更像是一个IDE,而emacs和vi是纯文本的(尽pipe它们有大量的扩展)。 如果您使用的是较旧的系统或SSH,则更可取。 另外,它们几乎在每台基于UNIX的计算机上运行,​​而XCode则是专有的Apple软件。

我不用vi来编写代码; 不过,我可以在编辑器中使用vi模拟器。 当我在IntelliJ中进行Java编码时,我使用IdeaVIM插件,它在IntelliJ的编辑器中提供vi支持。 这意味着我几乎从不需要把手指从家里排开。 我使用键盘(h,j,k,l)进行导航,使用yy,dd等进行剪切/粘贴。当然,当我需要全functionGUI编辑器的强大function时,vi仿真不会阻止我使用这些特征。

这让我觉得XCode在编辑器中没有vi模拟function。 似乎任何体面的IDE应该具有的function。

就我个人而言,我喜欢TextMate,因为它实际上是一个非常轻量级的解决scheme。 当然,我还没有深入地使用过Vim或者Emacs(我喜欢我的GUI),尽pipe我完全享受了基于Control的光标导航(Control-A是行首,Control-E是行尾,Control- F和Control-B向前和向后等)。 所以在Xcode和TextMate之间,我使用Xcode进行了大部分严肃的开发,但是如果我只需要快速编辑一个源文件,我可以在Xcode甚至完成启动之前进行编码(这有助于TextMate记住之前打开的文件并恢复它们)。 所以对于一些轻量级的文本编辑,TextMate是我的select。

在此之上,TextMate的插件支持是惊人的; 它为Xcode不提供的许多不同的东西(shell脚本,CSS,SQL,LaTeX等等)提供全面的支持(语法着色,构build和运行等)。 当我需要在Java中刷新一个快速程序或调整一个网页时,使用Vim然后从terminal进行构build要容易得多。

我唯一抱怨TextMate是控制台是只读的,所以我不能build立任何交互。 这一点,它似乎并不支持C99关键字(for循环和布尔值)在普通的C文件中。

你可能看看我的文章为什么Emacs的主题? 。 虽然它或多或less是以Emacs为中心的,但其中的一些要点也适用于vim和TextMate。

我很久以前就尝试过vim,出于某种原因“我没有得到它”。 然后,多年来尝试其他编辑后,我达到了没有编辑似乎做我想做的事情。 在向一位朋友expression我的失望之后,他build议我尝试vim ….我很高兴我又看了一遍,因为这是我不知道该怎么问的问题的答案! 自从我使用Vim / MacVim以来…

在这里我的configuration: https : //github.com/RandyMcMillan/QuickVim

我也使用Xcode,因为代码完成是很好的。 XVim适合希望在Xcode编辑器中使用模式/ vim的用户: https : //github.com/JugglerShu/XVim

但是当谈到我每天编辑Vim的时候, 这就是为什么我有QuickVim回购,以便我可以随时/随地快速重现我的环境。

我有一个像TextMate等编辑许可清单..但它可能是我永远不会使用它们,因为我可以免费使用vim和定制它我的确切规格。

沉重的Vim用户在这里。 我通常发现Vi / Vim的文本处理能力远远优于传统的编辑器,它们缺less如下的东西:

  • 视觉模式:例如,前缀5行,注释//
  • macros:例如用引号围住第3至第5个单词,重复100行
  • 多个寄存器:认为36个寄存器复制和粘贴
  • 删除{动作}:例如,从光标删除直到下一次出现的“initWithFrame”

这些只是Vim XCode文本编辑手中的几个例子

对于Objective-C。 我倾向于在IDE上安装一个Vim插件来获得两全其美的效果 – 本地构build/ UI组件支持。

顺便。 Emac键盘绑定(例如CTRL-A可以到达顶端)在Mac上的许多原生(Coacoa)文本字段中都受支持。 包括你用于在计算器上input答案的那个:D

XVim与XCode 一起工作。 适用于AppCode的IdeaVim