抛弃宗教因素对比 Vim 和 Emacs

发布于 2024-12-08 05:38:37 字数 2766 浏览 12 评论 0

介绍

在中坚的技术团体中(In hard core technical circles),公然讨论这两个编辑器的优缺点是不被允许的,在过去一段时间里,围绕着这个问题的争论引起了很严重的后果(当你回过头来思考为什么会有这么严重的后果时,会觉的这真是荒谬),并且持续了很长时间. 两边的支持者们很少倾听对方的理由,并且大多数的人都认为这是个二选一的问题. 说真的,我觉得这种观点完全没有任何意义。

我觉得我很适合回答这个问题,因为我使用这两种编辑器有大概 25 年了,15 年的时间一直在用 Vim,还有 10 年的时间用 emacs。

首先我要稍微批评一下你的问题 文本编辑器:哪个更好,Vim 还是 Emacs?为什么? ]. 你问的问题太简单了,这样根本无法回答。Emacs 和 vi 都是很优秀的编辑器,它们都善于处理某一类的问题 - 但它们的强大体现在不同的方面,这使得它们在解决某些问题时要强于对方。

Vi/Vim

在我看来,若你的目标仅仅是编辑文本,那么 Vim 可能更适合你。它的模式编辑 (modal editing) 能力使得它处理起文本来相当快速,同时它提供了大量的命令和快捷键来高效地进行定位和移动文本,这使得它的潜能无可限量。

近年来,各种扩展技术被应用于 Vi(a-la Vim),这使得它可以以各种不同的方式进行扩展,但是以我个人的经验来看,它的这种编辑范式和机制限制了它的扩展性,使它难于完成你像要作的事情。

例如,对我来说压倒骆驼的最后一根稻草是想为 Vim 添加类似 IDE 那样的自动补全与重构方法/成员变量的功能。目前在 Vim 上有了许多的解决方案,但是它们要么完全无法工作,要么需要安装那些难以构建与安装的 C 共享库,而这使得我的 Vim 变得很不稳定。当你知道你的你的编辑器可能在编辑当中崩溃时,你可的仔细考虑一下了。

注意,上面的场景其实与编辑文本根本没半点关系。这是将 Vim 强制改造成 IDE 的必然结果。

有些人提到 Vi/Vim 哪都有,这是它的一大优势。但 Vi/Vim 只是默认安装于 UNIX 系统上而已,然而这并没有什么卵用。

Vim 用户建议看一下 Vimcasts 以及 Drew Neil's 的那本 Practical Vim .

Emacs

我个人更倾向于把 Emacs 看成是一个极度强力的编程环境而不仅是一个文本编辑器. 只是它同时被优化用于进行文本工作,其结果是,它也具有很强大的文本编辑功能了。

我知道,看起来我似乎只是在玩文字游戏,但是相信我,我并没有。如果你想创建一个完全适合你需求的的超级强力的编程环境,那么 Emacs 无疑是你的最佳选择。

Emacs 十分擅长于控制子进程,因此,如果你使用 Python 编程,emacs 会在内部调用 Python 解释器. 你可能会觉得奇怪,为什么要这样作呢? 这是因为,接下来你可以一边编码,一边试运行一些代码并看到运行的结果。Emacs 甚至可以在远程机器上运行 Python 解释器然后将它连接到你的编辑 session 中。

Emacs 的核心是 emacs lisp - elisp 是 emacs 超能力的来源. 它是 emacs 的唯一扩展语言,但是它可以用来作任何事情. 即使不学习 elisp,你也可以高效的使用 emacs, 但代价是,既然你跟普通大众一样,那么当你发现某个 mode 或其他包在某些地方不符合你的需求时,你会变得不知所措。

如果你乐意,你可以使用 emacs 作为你的整个工作环境 - 你可以用它编辑文本,撸代码,聊天,对源码进行版本控制(例如 Git) 等等几乎任何事情。

这也是许多非 emacs 用户攻击的地方:它根本不是个编辑器,它就是个操作系统!要我说,没错,但这才是 Emacs 强力的地方啊!

比较好的 Emacs 用户的入门资料有 - Pragmatic Emacs 以及 both stellar 的 Mastering Emacs 这本书(同时也是网站)。

总结

答案很长,但是考虑到问题本身很敏感也很复杂,因此我想这个长度是正常的。

若你主要是编辑一些存文本,或者只需作少量的编码工作,或者只是编辑一些静态配置文件,又或者你需要所用的编辑器在所有的 UNIX 操作系统中都有安装,那么 Vim 无疑是你的最佳选择。

若你的需求很复杂,并且时常需要自己来突破编辑器的限制,需要编辑器提供类似 IDE 那样的功能,又或者你是个开发狂热者,喜欢编码并且需要你的环境提供最大化的定制能力,则直接用 Emacs 吧

最后,抛开那些辩论和信仰,只要试一下哪种编辑器会使你更有效率就行了. 又或者可以像我一样,同时使用两种编辑器! 通常当我在服务器上要快速改个什么东西,我会用 vi;当我在我的台式机/笔记本上进行大量的编辑时,我会使用 emacs.

工具就是工具,哪个好用就用哪个。

有热心的读者提醒我使用 evil-mode 可以兼顾两者的优点它为 Emacs 提供了与 vim 完全兼容的操作方式,并且已经很完善了. 它工作得很好,而且我在刚从 Vi 转到 Emacs 时用过它,我由衷地推荐。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

上一篇:

下一篇:

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

文章
评论
28 人气
更多

推荐作者

笑脸一如从前

文章 0 评论 0

mnbvcxz

文章 0 评论 0

真是无聊啊

文章 0 评论 0

旧城空念

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文