Vim 值得花时间学习使用Emacs吗?
首先:我不想发动一场宗教战争 在我记忆中,我一直在使用vi,几次尝试使用Emacs时,我都迷失了方向,很快就放弃了。然而,很多人发现Emacs非常强大。它的可编程性有点传奇色彩。我主要从事Solaris+Java开发,我想问一个简单的问题:如果我花时间研究Emacs,我的生产率会提高吗?它通过Vim提供的功能是否会在合理的时间范围内通过生产力的提高得到回报Vim 值得花时间学习使用Emacs吗?,vim,emacs,editor,text-editor,Vim,Emacs,Editor,Text Editor,首先:我不想发动一场宗教战争 在我记忆中,我一直在使用vi,几次尝试使用Emacs时,我都迷失了方向,很快就放弃了。然而,很多人发现Emacs非常强大。它的可编程性有点传奇色彩。我主要从事Solaris+Java开发,我想问一个简单的问题:如果我花时间研究Emacs,我的生产率会提高吗?它通过Vim提供的功能是否会在合理的时间范围内通过生产力的提高得到回报 重复:我不想要一个“我的编辑比你的好”的答案。我只是想要一个肯定或否定的答案,看看是否值得投入时间。我的生产力真的会提高吗?否(我两者都用过
重复:我不想要一个“我的编辑比你的好”的答案。我只是想要一个肯定或否定的答案,看看是否值得投入时间。我的生产力真的会提高吗?否(我两者都用过)。我不想要一场圣战,但请回答一个非常主观的问题,回答是/否 是的,由于功能强大,您可能会看到生产力的提高
不,您不会看到生产力的提高,因为emacs中使用的模式和隐喻可能与您的大脑不一致。emacs文档是一片森林。当我意识到Vim的文档是多么的有条理,许多特性是多么的易读时,我从Emacs来到了Vim。我不知道Emacs专家的出路是什么,但我要警告你,学习在这方面做任何有用的事情都需要很长时间,而且不会让你在nethack方面做得更好。坚持维姆
是一个更好的用于Mac的Emacs,尽管这对Solaris没有帮助。Eclipse有点酷,有很多插件。我更喜欢emacs而不是vi,但我对两者都很满意 您可以在emacs中做一些事情,使其比vi更强大,但并非所有这些都与编程相关。(你可以发送电子邮件或阅读vi中的新闻吗?不,但谁在乎呢?)如果你对lisp感到满意(我不是),你也许可以编写附加组件、模式和其他东西,让你的生活更轻松,但这很可能是语法着色、括号匹配和类似的吸引眼球的东西 我现在就不闲逛了。使用emacs,您的生产率会提高吗?没有
更新:见下面我的评论。自从我发布这篇文章以来,我发现使用emacs比使用vi更有效。我想进一步研究emacs,但我就是不能长时间使用它;我的手受伤了。我做错了什么吗?根据您的编码方式,您可能会看到生产率的提高。作为背景,我也是vim的长期用户,但我大约在2年前学习了emacs,现在可以互换使用它们 促使我真正学习emacs的是它的有用功能,它可以同时打开大量文件,并且可以轻松地在它们之间切换。我正在介绍一个添加和触摸大量类的特性。(这是C++,所以每个类通常有两个文件。)因为我仍然在增强接口,所以当我意识到需要更改另一个文件时,我通常会在更新一个文件的时候。 有了gvim,为每个文件打开一个新窗口是最容易的,这已经开始变得很麻烦了。但是,对于Emacs,在同一窗口(Ctrl-x、Ctrl-f)中打开新文件很简单。一旦Emacs打开了一个文件,就很容易在打开的缓冲区之间来回切换(Ctrl-x、Ctrl-b) 更进一步说,单个emacs会话可能会打开多个窗口,因此除了垂直拆分窗口外,我还可以在不中断文件工作的情况下,决定在其旁边打开另一个窗口,使我能够有效地并排工作,同时仍将每个窗口保持默认的80个字符宽度 我发现在vim中仍然有一些东西更容易(例如块选择模式、简单宏录制、差异模式),而在Emacs中则更容易(行对齐、文件/缓冲区管理、窗口/屏幕管理)。因此,根据我预期的编辑任务,我发现自己在两者之间交替(有时同时使用两者)
如果你还不确定,我建议你试试。运行Emacs教程,然后使用它为一个上午或一天编写代码,主要依靠帮助。如果你仍然不喜欢你所看到的,就和维姆呆在一起。无论编辑器给您带来了什么,您对该工具的熟悉程度和知识都将是影响您工作效率的最重要因素。如果您决定花时间编写文本编辑器,您的工作效率将提高。在这两个编辑器中,emacs提供了更好的框架或持续定制。如果您不编写文本编辑器,只需使用舒适的工具即可。我喜欢emacs并每天使用它 也就是说,我不认为学习it的成本会被未来的生产率提高所弥补
如果你正在编写Java,你需要一个好的IDE。Emacs朝着成为一员的方向走了很长一段路,但让我们面对现实吧,IDEA等人轻而易举地击败了它。(emacs可能启发了很多IDE,但那是另一个故事)。在不寻求宗教战争的同一条路线上(如果你觉得必须的话,请继续投票否决我),为什么你觉得vi的唯一选择是emacs?是您开发的操作系统,还是您探索的选项
Java开发环境现在享受着一些最好的IDE(免费和付费),如果在代码编辑和重构支持方面不是最好的话。IntelliJ IDEA甚至有一个vi插件,可以帮助您感觉更自在,例如(不确定Eclipse是否有类似的东西可用)。虽然更换工具确实意味着一个学习曲线,但如果这一飞跃足够大,那么花在这方面的时间可能是值得的。如果您愿意学习并定制它以适应您的需要,Emacs将带来生产力的提高
C-x ( start remembering keystrokes
C-x ) stop remembering keystrokes
C-x e replay the remembered keystrokes
:g/^<a/s/>/ target="_blank">/
1. C-x (
2. M-C-s <a\>
3. C-b
4. C-s >
5. C-b
6. target="_blank"
7. C-x )
8. C-u 10000 C-x e
1. start remembering keystrokes
2. regex search for <a. Note that the "\>" after the "a" is not HTML. It's emacs regex notation for end-of-word.
3. back up one character - as a side-effect this gets you out of search mode
4. search for the next ">"
5. back up over the ">"
6. enter space as an attribute-delimiter followed by the target="_blank" attribute
7. stop remembering keystrokes
8. replay the remembered keystrokes 10,000 times or until the search fails