从Vim转换到Emacs的最佳方式是什么?

34

虽然我是Vim用户,但我很想开始学习Emacs。但是每当我开始跟随Emacs教程时,我总会不小心按到Vim命令,感到非常沮丧。

有没有更好的方法来完成转换呢?


64
只需在你的 .bashrc 文件中添加 "alias emacs='vim'" 即可 ;) - claf
5
我曾经在我的设备上将“vim”更名为“emacs”,以激励自己真正地转换到使用Emacs。 :) - lindes
7个回答

36

我建议只是在事故发生频率降低之前坚持度过。我怀疑添加一个层来尝试“帮助”——比如一个会试图推断意外的Vi命令并执行它们的层——只会使过渡变得更慢。

当我在不同的版本控制系统之间转换时也是这样做的。与其创建一个Shell脚本包装器,让我继续使用错误的子命令,并将它们转换为新的VCS习惯用语,我宁愿被迫“说出新系统的语言”。

记住:你是人类;你天生适应新环境。保持清醒,让错误成为错误,你会做得很好的。


27

练习,练习,再练习。正如您从学习 Vim 中所知道的一样,只有通过大量实践才能使命令变得自然流畅。我是一位长期使用 Vim 的用户,学习 Emacs 极其痛苦,需要数月时间,但现在我两者都很好地应付了。学习两者都是值得的,因为 Emacs 在编辑某些语言和执行某些任务方面比 Vim 更好,反之亦然;具有使用任何一个的选项是好的。过一段时间后,您会开始在脑海中将两者划分开来,您可能不会遇到太多困难(尽管我偶尔会用 :wq 去退出 Emacs 和 C-/ 在 Vim 中取消撤销,但这种情况并不经常发生)。

  • 彻底阅读 Emacs 文档。Vim 和 Emacs 的术语和功能非常相似,但有些许差异足以让所有内容变得混淆起来。教程是一个好的开始,但Emacs 手册是最佳实践和配置技巧的宝库。

  • Emacs 维基是您的朋友。当您遇到无法接受的 Emacs 功能时,通常有一种方法可以解决问题。

  • C-h a 也是您的朋友。就像 Vim 中的 :h 一样不可或缺,Emacs 帮助系统在浏览 Emacs 的庞大内置命令集时非常有用。有许多搜索文档以找到所需内容的方法;这个页面有一个很好的摘要。

  • 不要一开始就使用viper或vimpulse。Emacs永远无法与Vim相比。首先要沉浸在Emacs中,直到你习惯了它。Emacs的操作方式非常不同,但与Vim的按键绑定相比,它有自己的优点和缺点。学习两者,这样你可以看到它们的长处和短处,并做出明智的决策。现在,我已经借用了一些Emacs的快捷键,并将它们映射到Vim中,反之亦然。

  • 慢慢来。当(而不是如果)Emacs让你发狂时,请休息一下,使用Vim,稍后再回来。这需要一段时间。

  • 请记住,你不需要“切换”。你不会忘记Vim并用Emacs替代它。如果你知道Vim并学习了Emacs,那么你将会知道两者。这是一件好事。


    11

    2
    我使用Evil,它是vimpulse和viper的后继者,几乎完美。这里可以看到一个简要比较 - Gordon Gustafson

    6

    从Vim与Emacs的辩论时长和强度来看,两个编辑器的实用性大致相同。如果你已经熟悉vi,那么最好继续使用它。


    6
    如果他在考虑转换,那他还不够了解 :-) 真正的 Vim 用户永远不会转换,... 同样适用于 Mac 用户。 - Rook
    如果您使用Mac,则大多数emacs命令都内置在文本框中(即C-k,C-y,C-a,C-e,使用选项跳转单词等)。这是切换的一个很好的理由...您已经了解了大部分内容!或者,您可以使用Lisp(slime)编写代码或使用R(ESS)。 - Vince

    3
    作为一名曾经使用vim的转换者,我强烈推荐viper-mode。它并不完美,但是它会给你大部分vi/vim的按键绑定。你会很容易地学习到在vim中你习惯使用的一些命令(在我看来,主要是以'g'开头的命令)。
    总的来说,我真的觉得这是使用Emacs的最佳方式。vi的按键绑定非常高效,对于我在文本编辑器中做的许多事情(简单的移动命令、涉及移动、删除、更改、搜索等的简单命令),vi模式比Emacs更加流畅和高效。我完全可以理解为什么一个不熟悉Emacs的人不想使用viper-mode,但作为一个来自vim的人,你确实有机会得到两全其美的效果。
    总体上:习惯于viper-mode并不完美的事实,学习如何用Emacs的方式完成你从中缺失的功能,并确保你探索了在vim中不可用的Emacs的酷炫功能。
    至于使用vimpulse,当我第一次切换时我尝试了一下,但我不会真正推荐它。因为它是一个主要模式,你会错过很多(大多数?)关于Emacs的好东西;而且它仍然不能完全忠实于vim。更好的方法是接受viper-mode,然后继续前进。

    3

    我没有使用过这个(我使用Vim),但Vimpulse是一个Emacs脚本,用来模拟Vim(与Viper-mode不同,它是用来模拟vi的)。 这可能会使过渡更容易。


    3

    我认为这取决于你学习Emacs的动机。

    如果你只是对学习Emacs有一点兴趣,viper模式可能是最好的选择,因为重新训练肌肉记忆可能不值得付出痛苦和挫折。你仍然可以使用所有优秀的Emacs功能,但根据你选择的viper级别自定义你的体验。

    如果你想学习Emacs,因为你想要一个完全可定制的编辑器,那么我建议选择一个你认为可能有趣的任务,并用它来激励你使用Emacs。这种体验将是完全独特的。在这种情况下,我建议直接使用Emacs并期望几天的痛苦和挫折。


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