我应该学习使用Emacs吗?

17
我使用IntelliJ IDEA作为代码编辑器,所以这并不是要取代它。我使用vivim在服务器上进行简单的文本编辑,并使用标准的unix命令查找文件,获取目录列表等。
同事们很喜欢emacs,但我想知道学习它是否值得我的时间。学会后我会更加有效率吗? 编辑:有人指出这个问题已经被问过了。点击这里
14个回答

31

我已经使用Emacs超过20年了。尽可能地,我尝试将其用于我所有的打字需求,包括像Fu86所提到的阅读电子邮件、新闻等,以及笔记、待办列表、编写代码、运行编译等。由于Emacs比可扩展的Vim(而不是相对不可扩展的Vi)要古老得多,它拥有一个庞大的扩展模式集合,涵盖几乎你能想象到的任何用途。

也就是说,严肃使用Emacs可以被视为一种“生活方式选择”,因为需要花费相当多的精力和时间来熟练掌握这个工具。

我的真正答案是,就编辑器(以及任何其他类别的工具)而言,你应该找到一个强大且灵活的工具,然后花时间成为该工具的熟练用户。你的选择可以是Vim或Emacs,或者可能是其他东西,但无论如何,要花时间好好学习它。就我个人而言,我选择掌握Emacs,每当我想让它处理一些新情况时,我都从未失望过。

由于我从未认真地在Java中工作过,因此无法根据直接经验评论它在取代Eclipse和IntelliJ等工具方面的表现如何。我已经足够老了,对这些高度集成的工具持怀疑态度(即使没有使用过它们),而且有一些Emacs模式提供了一些(尽管肯定不是全部)这些编辑器的功能。


我意识到这个答案现在已经有将近十年的历史了,但是我很好奇 - 你所说的“高度集成化”工具是什么意思?我知道这个词出现在同一个语境中,但是我很好奇它究竟指的是什么,以及程度如何。 - Hashim Aziz
3
正如你所指出的那样,我写这篇答案已经有一段时间了。但大致上来说,我认为“高度集成”是指现代IDE往往与单一语言或相对较少的语言密切相关。这种紧密的集成允许实现非常先进的功能,但也防止将该编辑器(IDE)用作通用文本编辑工具。重新阅读我的原始回答,尽管我仍然支持前两段的观点,但最后一段表现出一定程度的傲慢和自以为是。 - Dale Hagglund
感谢这么长时间后的回复。哈哈,年龄增长的好处。 :-) - Hashim Aziz

15

1) 你应该学习使用Emacs吗?很有可能。2) 你应该尝试将所有开发工作都转移到Emacs上吗?不应该。我会逐一讨论这些问题。

1) 在这个问题中,Emacs可以被Vim或其他跨平台编辑器替换。我希望强调的是它是跨平台的事实。这对我来说是掌握Emacs(或Vim)的主要好处。无论我在哪台电脑上,它要么已经安装了Emacs,以便我可以直接开始一些开发,要么我就能在几分钟内轻松下载它。在我的大学编程实验室里,我不会尝试使用计算机上所拥有的任何IDE,我只需打开终端并使用Emacs。由于我已经有一定的Emacs经验(虽然不是专家级的),我能够轻松完成工作,而无需与不同的环境斗争。

此外,某些语言根本没有像样的IDE。例如,每当我尝试在OS X上为Haskell找到一个像样的IDE时,我总是会回到Emacs。如果我不熟悉Emacs,我真不知道该如何编写Haskell代码。

最后,对于非常小的项目(特别是只有一个文件的简单程序),使用IDE感觉笨拙和低效;拥有一个简单的文本编辑器对于这些任务来说很棒(尽管某些人可能会争论Emacs实际上有多么简单)。但这并不是为Emacs特别辩护的理由;例如在OS X上,TextMate是一个非常适合这些任务的编辑器。

2) Emacs强大而且可扩展性极佳,但根据我的经验,它不能代替IDE。当我在闲暇时间开始新项目时,我首先考虑的是是否有适合我语言和技术选择的好IDE。例如,在OS X上,我通常会先看是否有一种好方法可以使用Xcode进行我的项目。在Windows上,我会看看是否可以使用Visual Studio。如果那样做失败了,我会考虑使用类似Eclipse和NetBeans的IDE。只有在这之后,我才考虑使用像Emacs这样的文本编辑器进行严肃的开发。

希望这能帮到你!


5

我认为你也不会更加高效。目前我自己在编程时使用的是Emacs,但主要原因是我必须通过ssh登录到正在开发的系统中。否则我可能会使用像IntelliJ或Eclipse这样的IDE。


3
老实说,我认为你使用Emacs并不会更加高效。十年前,Emacs作为一款编辑器还可以,但现代的IDE——特别是我非常喜欢的IntelliJ——除了编辑器之外,还具备调试器、重构代码、无缝移动类和包等功能。IDE带来的生产力提升很大程度上来自这些功能,而不是编辑器本身。
如果你没有将vi/vim作为主要文本编辑器(即在开发工作中或者花费大量时间使用),那么你所使用的任何编辑器都只是IDE的附属品。

4
“人们热爱Emacs的同时,可能也会热爱他们的Betamax录像机。”你可以认为(对或错)Emacs不是一个好的选择,但这样的评论缺乏优雅,不应该出现在这种对话中。 - dmckee --- ex-moderator kitten
5
Emacs是一款集成开发环境,拥有几乎能想象到的各种任务模式(“插件”),包括调试器、代码格式化等等。如果缺少某些功能,你甚至可以自己扩展它。它甚至可以在没有X/Windows的情况下使用,但也支持鼠标操作。 - Svante
2
我不同意(针对喷子的指控)。有些人就是不能接受不同的意见,所以选择使用冒犯性言论作为超级踩。更糟糕的是,他们真的将不同的意见视为冒犯。如果是这样,我对他们感到遗憾。 - cletus
2
哇,负面投票?他有权利发表自己的观点,他可以决定它是对还是错,而且绝对不会是冒犯性的。Cletus已经回答了问题“我会更加高效吗?”...你不能因为持有不同意见就标记一篇帖子,或者因为你认为不同意见是冒犯性的而标记它。 - mk12
1
什么?Emacs可以拥有调试器、重构工具、代码可视化工具等,你只需要安装一些插件。停止散布谎言和胡说八道。非常感谢。 - dev1223
显示剩余6条评论

3
每个程序员都必须至少做一次选择编辑器的决定,但往往在他们的职业生涯中需要反复选择。四年前,我从一个爱好编码者转变为专业人士,几乎同时开始使用emacs,之前我是vi+Eclipse用户。
我的经验是,学习emacs所花费的每一分时间都会得到回报,增强了我的能力。我仍然不能推荐它用于编写Java - Eclipse/NetBeans/IntelliJ比任何纯文本编辑器都要好得多,但对于配置文件编辑、C编程、脚本编写,emacs提供了您可能需要的一切,甚至还支持gnome下的TrueType字体(不幸的是,最新版本仍未发布)。
改变工具总是痛苦的。但是,是的,你应该尝试学习它。你不会后悔的。

2

Emacs和Vim的区别在于,Emacs包含许多功能,包括邮件、新闻、文件管理器以及文本编辑器。而Vim只能进行文本编辑,并且非常出色(无需插件)。你可以选择喜欢Emacs还是Vim。我个人更喜欢Vim,但建议尝试一下Emacs,找到最适合自己的文本编辑器。


2

'emacs' 很棒,但如果你已经熟悉 'vi' 并且不会经常使用 'emacs',那么最好不要花太多时间学习 'emacs'。 'emacs' 很有趣,并且随着时间的推移变得相当直观。因此,我建议每天花费 10 到 15 分钟,看看它适合你。


我的问题是,到了第二天,我就忘记了所有的命令!我觉得10-15分钟根本不足以学习。 - oxbow_lakes
1
@Chris:请看我在https://dev59.com/U3VC5IYBdhLWcg3wYQEp的回答——学习“命令”并不是最重要的事情。你可能需要花一个小时阅读教程,然后开始使用Emacs进行所有简单的文本编辑。最终,你会用它来做所有事情。;-) - ShreevatsaR

2

我一直更喜欢使用vim进行简单文本编辑,但是我更倾向于使用elisp扩展编辑器的功能。现在,当我需要进行重要的编辑时,我使用emacs,而在ssh到服务器时,我则使用vim来快速操作。


1

学习Emacs并不是一个坏主意:许多IDE(例如Eclipse和NetBeans - 我上次使用时)都支持相同(或类似)的键绑定。虽然这些绑定一开始可能会令人困惑,但在我看来,它们可以极大地提高您在键盘上的速度,因为您的手从未真正离开“主”位置。在更成熟的IDE中,这是无价之宝。

当然,由于已经习惯了Emacs键绑定,现在如果没有它们,我就会感到困难。


1

学习Emacs还有一个好处。在Unix操作系统中,Emacs已经以令人惊讶的方式进行了整合。例如,在xterm中可以使用基本的Emacs命令。在OS X中,几乎可以在任何地方使用基本的Emacs功能。而且,您还可以设置许多IDE(如Visual Studio或Eclipse)来使用类似于Emacs的命令。所以即使您不经常使用Emacs,熟悉Emacs的基础知识也是一件好事。

还有一点需要指出:在笔记本电脑上使用Emacs是非常方便的。特别是在苹果笔记本电脑上。您无需担心Home键所在的位置非常恶心,因为您只需要使用C-a即可。


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