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

60

嗨,我主要做C++和Objective-C编程。我发现Xcode加上一个自动完成/宏插件(Completion Dictionary)已经很好用了。

然而,所有人似乎都对纯文本编辑器赞不绝口。我试过一段时间的Textmate;喜欢它的简单性但是不喜欢它的文件/框架处理。

我错过了什么吗?或者说,Vim或Emacs有像Xcode一样好的自动完成功能吗?


2
需要注意的是,如果你尝试使用vim或emacs,你不能只试用一两个小时。你需要花费至少几天时间来熟悉它们,并熟悉基础知识,如果你一直使用鼠标进行操作,可能需要更长的时间,大约一周左右。如果你不这样做,那么你肯定不会喜欢这种体验。 - naught101
21个回答

188

坐下来听我说一下。

在Xcode出现之前,就有VIM和Emacs了。虽然难以想象,但这是真的。

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

Emacs非常可定制化,几乎提供你能想到的所有功能(包括内置收缩和汉诺塔)。你可以轻松地从Emacs中调用编译器,并根据需要创建自己的扩展。

VIM具有令人难以置信的正则表达式引擎(Emacs也有),如果没有箭头键,它非常方便,因为(VI)几乎在每个Unix操作系统中都有,并且能够完美工作。人们非常善于使用按键在文档中移动,而不必使用鼠标。

Emacs也是如此,但对我来说,我觉得VIM的光标移动更容易。

文本编辑器之争像Mac vs PC之争一样充满了宗教狂热,答案是选择最适合你的。如果你喜欢Xcode,那很好,请继续使用它,但如果你被迫在PC或Linux机上工作,祝你好运。就个人而言,我用Emacs来编码,VIM来操作文本,用Firefox浏览lolcats。


7
加油添柴无妨,我们这些使用vim/emacs的人喜欢能够在任何一台计算机上使用这个编辑器,从基于NetBSD的烤面包机、古董m68k架构的计算机,到IBM Power 5,以及Windows和Mac OS X系统。但是,XCode只能在Mac OS X上运行。 - Arafangion
13
@Arafangion提到这些工具在远程连接下也能表现出色,即使延迟较高。(例如,通过笔记本电脑的wifi连接在另一个大陆上的计算机上开发代码。) - Boojum
10
作为一个使用 Vim 三年的用户,我不同意 Alan 的说法,即 Vim 或 Emacs 的用户不使用箭头键和鼠标是因为他们过于传统。他们不使用箭头键或鼠标,是因为当你需要在键盘和鼠标之间频繁切换时,这会非常烦人。使用 Vim,我可以把手保持在键盘主区域而不需要离开它。这可以提高速度,也可以减少手部 RSI 问题。 - AMing
3
@CyberMing:你误解了我的意思。现代的每个键盘都有箭头键了。几十年前,它们没有,所以你不能期望你坐在终端上的箭头键会有。 - Alan
7
很有趣。我自己用Vim来编写代码,Firefox来处理文本,用Emacs看lolcats。 - naught101
显示剩余3条评论

15

我真的不明白为什么人们谈论文本编辑器时会提到emacs。根据我的经验,它更像是eclipse(或其他一些平台/IDE),因为它是一个环境,并且擅长文本编辑。

作为一个IDE,emacs提供版本控制、实时编译、拼写检查、自动完成、调试、代码浏览等功能,适用于各种SDK。对于您计算机的其余需求,它可以充当电子邮件/新闻/网络/irc/twitter/xmmp客户端,日历、组织者、计算器、终端模拟器、远程编辑、电子表格、游戏等等。

在Dijkstra之后,“emacs与文本编辑无关,就像天文学与望远镜无关”。


1
Vim有所有这些IDE功能可作为插件使用,如果默认情况下没有的话。它似乎也具备你提到的许多其他计算需求,尽管我不明白为什么有人会想在他们的文本编辑器中使用其中一些。"做好一件事"似乎是更明智的选择。 - naught101

11

你所忽略的是Emacs和Vim实际上是集成开发环境(IDE)。


12
你或许可以为Emacs辩护,但对于Vim来说就不太可行了。Unix是最好的集成开发环境,Vim或Emacs只是其中的一部分。 - alternative
Emacs是一个需要良好IDE支持的操作系统。Vim是一个需要良好操作系统支持的好文本编辑器;) - snowbound
你可以下载 vim 的语法检查插件和依赖于语言的分页自动完成插件。因此,我认为 vim 是一个集成开发环境的想法有很有力的论据。 - Luke Davis

8

vi在UNIX系统上随处可见,而Emacs也几乎如此。据我所知,Xcode只适用于一种平台。

拥有一个强大的集成开发环境是一件好事,但每个人都应该具备一些技能,在任何可能被投入的平台上保持其功能性。


5

这完全取决于你的偏好。

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

只要你的环境兼容于所选的文本编辑技术,就随便你用哪个。

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


12
是的,因为我们Vim用户知道Emacs是一个轻量级的操作系统。 :-) - the Tin Man
1
有趣的事实:大多数 vim 会话使用与 Emacs 会话相同的 RAM。 - nmichaels

4
你似乎认为人们喜欢Emacs/Vim的主要原因是代码补全。人们喜欢Emacs/Vim是因为它们都是为编辑文本而制作的。你可以控制和使用其他编辑器所没有的选项。一旦你真正熟练地使用其中一个程序,你就希望这些关键绑定/命令在任何地方都可以使用。宏、正则表达式、通过搜索/单词/段落/函数移动、与版本控制交互、复杂的撤消/重做和复制/粘贴功能以及扩展选项只是这些编辑器真正擅长的一部分。

代码补全只是让编程写作变得更加容易的众多工具之一。Emacs/Vim可以处理所有这些工具(本地或通过扩展)。


3
不,其实不是。这只是个人喜好而已。我喜欢在Visual Studio 6中工作,但现在新版本太过臃肿。所以如果我可以在VS之外完成某些任务,我通常会这样做,而不必打开整个IDE。
在Windows上,我喜欢使用notepad2和gvim。我已经将vim定制到完全符合我的需求,因此我不必考虑什么和在哪里操作。
但是需要指出的是(您也可以通过阅读此类帖子自己找到答案),很多用户使用vim/emacs/...是因为它们被认为是最好的/酷炫的/实际可用性强的。因此,如果它不适合您,请不要使用它。没有人会因此看待您有任何问题。

3
我个人喜欢Emacs。我用过Vim和一些IDE。Vim和Emacs都有众多社区,人们愿意为几乎任何语言编写功能。我不知道有哪些IDE支持Haskell。这完全取决于你重视什么。两者都有扩展语言,但在我看来,Emacs Lisp更好。忽略鼠标的能力也是我喜欢的主要原因。许多IDE还具有Emacs和Vim兼容模式或扩展。两者都需要大量时间投入,但都值得。迟早你会选择适合自己的Vim/Emacs/IDE,并继续提高自己的技能。

3

对我来说,最重要的两个功能是:

  • Emacs键绑定,因为我的手指习惯于这种方式。

  • 开源,因为它提供了自由。被绑定在一个平台上是可憎的。

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


2

Emacs非常强大。我使用vimpluse.el插件,这样我就可以在所有Emacs功能中使用vim的按键绑定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接