![Emacs 有哪些功能与 Vim 相辅相成?](https://linux22.com/image/1212159/Emacs%20%E6%9C%89%E5%93%AA%E4%BA%9B%E5%8A%9F%E8%83%BD%E4%B8%8E%20Vim%20%E7%9B%B8%E8%BE%85%E7%9B%B8%E6%88%90%EF%BC%9F.png)
我已经广泛使用 Vim 一段时间了,而且我真的很喜欢使用它。但是,我不断看到对 Emacs 的赞美。我决定研究一下 Emacs,以完善我对 Unix 编辑器的了解(更不用说 Emacs 的键绑定被广泛使用)。
但是!我很乐意在 Vim 中完成大部分日常工作。因此,理想情况下,我希望了解(除了基础知识之外)Emacs 可以填补的空白,或者它可以比 Vim 做得更好的事情。我想典型的例子是 Emacs 和 Vim 中的 Lisp/Scheme 编码。
你会从哪里开始使用 Emacs 才能真正体会到它的强大功能,并了解它的编辑方式与 Vim 有何不同,以及这两个编辑器如何相互补充?同理,什么样的介绍比较好?
答案1
哪些功能是互补的?几乎所有非纯文本编辑的功能。阅读邮件、usenet、运行 shell、调试器 (gdb)、编译、版本控制集成、手册页、待办事项列表/项目规划 (org、planner)、浏览网页、ide (CEDET)、IM、IRC、远程文件编辑 (TRAMP) 等。甚至还有一些像游戏这样的傻事:俄罗斯方块、贪吃蛇、泡泡龙、乒乓球。
在严格的文本编辑领域,Emacs 和 vi 都可以胜任,你喜欢哪个就好比你喜欢哪种冰淇淋。我同意理查德霍斯金斯,如果您对彻底切换不感兴趣,那么 Viper 模式可能是探索 Emacs 的方式。
笔记:如果 vim 中提供了任何功能,请原谅,我已经很久没有使用它了,而且我是 vim 的一个非常简单的用户。
答案2
您可以使用 Viper 模式。Viper 是一个 vi 模拟器,可引导 vi 用户完成 5 个级别,每个级别都会在用户熟悉 Emacs 后引入新功能。
1 级几乎就是纯 vi。5 级几乎就是 Emacs。您可以随意从 viper 切换到纯 Emacs 并再切换回来。
Viper 随 Emacs 一起提供,并且已全部设置好并可供使用。Mx viper-mode 可运行它。它有一个介绍屏幕,解释如何使用它。
答案3
我从 nvi/vim 转到 nvi/emacs 作为我的“更改文件中的两个单词”/“花费数小时编辑一个装满文件的庞大目录树”编辑器,是因为子进程的集成。能够通过按键评估解释器中的文本区域,自动跳转到错误以纠正错误,然后让解释器一直运行,这非常有帮助。
今天不使用 emacs 时我所怀念的其他东西:跨模式和上下文的键绑定的一致性(剪切/粘贴/移动/等在迷你缓冲区中的工作方式与在缓冲区中相同)、通过 ido 模式交互式更新潜在完成的显示(“Cx b”向我显示了我可以切换到的缓冲区列表,输入一个字母“.c”会隐藏所有名称中没有 .c 的缓冲区,“Cs”旋转列表,“enter”选择列表前面的项目。我对我的窗口管理器或 Firefox 的不可用感到沮丧,现在我有了这种切换上下文的方式,其他一切都很笨拙)。
我认为另一个优势是,emacs 的大部分功能都是用 emacs lisp 实现的,这是一个多重优势。这意味着 emacs lisp 可用作扩展语言,并具有实际编程所需的功能。这意味着扩展语言保持了合理的效率和可扩展性。这意味着当人们扩展 emacs 以提高生产力时,他们的功能可以很容易地集成到官方 emacs 中。随着时间的推移,这意味着 emacs 是社区开发的,其规模是其他自由软件项目无法比拟的(尽管 Firefox 最终可能会赶上 xul/userscript 的东西)。这意味着由于 elisp 是一种高度反射的语言,我可以以交互方式查询有关编辑器功能的详细信息 - 在具有足够反射性的语言中,程序本身就是您可以拥有的最准确的文档。
答案4
真正促使我从 Vim 转到 Emacs 的是Org-Mode,允许灵活地组织或发布个人内容。它是一个大纲,我认为 Vim 中没有任何东西可以与之媲美。我还广泛使用 R 和 Latex,两者的内置支持(以我的经验而言)比 Vim 中的集成更强大。我确实喜欢 Vim-Latex 套件,但 Emacs 似乎更强大。
我非常喜欢使用 Vim,但现在我使用 EMACS 中的 Vimpulse 模式,它是 Viper 模式的增强版,使其更像 vim。与使用常规 vim 相比,vimpulse 的一个优点是您可以在“编辑模式”下做更多的事情;如果您想快速编辑,您可以使用 emacs 键绑定,而无需切换模式。