我知道Emacs中有几种不同的vim实现。有邪恶模式,毒蛇模式,vimpulse模式和vim模式。还有其他吗?他们如何比较?
我注意到evil-*
MELPA 上有很多软件包,这表明它们都不是100%功能完整的。它们提供哪些vim功能,缺少哪些vim功能?
(我对“ 一组相当完整的Emacs实现的vi宏 ”不感兴趣!)
我知道Emacs中有几种不同的vim实现。有邪恶模式,毒蛇模式,vimpulse模式和vim模式。还有其他吗?他们如何比较?
我注意到evil-*
MELPA 上有很多软件包,这表明它们都不是100%功能完整的。它们提供哪些vim功能,缺少哪些vim功能?
(我对“ 一组相当完整的Emacs实现的vi宏 ”不感兴趣!)
Answers:
vi
,vip
和viper
(按创建日期排序)来吧,内置使用Emacs,所有这些模仿VI的。vim-mode
是实际模拟Vim的更新,独立的工作,vimpulse
是viper
提供一些最有用的Vim功能的基础上的附加功能。evil
被创建为的替代vim-mode
。
evil
是最新的项目,也是唯一积极开发的项目。它的目标是尽可能地利用现有的Emacs功能,忠实地模拟Vim的编辑模型。我个人说它已经完成了90%,因为gn
缺少一些新命令(例如),一些与显示相关的功能很难重新创建(例如在文件末尾显示波浪号),并且没有实现Vimscript解释器或Ex模式基础之外的任何内容。但是,与原始版本相比,扩展和内省要容易得多,这些evil-*
扩展在几乎所有情况下都等同于Vim插件的Emacs(evil-leader
例如,这是一个例外,因为不必考虑Emacs键盘映射支持)。
考虑到evil
在某些方面已经超越了Vim(请参见:s
和其视觉预览,或者创建有用的新模式所花费的精力很少),我衷心推荐给对Emacs进行模式编辑感兴趣的每个人。
g/
在Vim 中是个新命令。我从未见过它,也找不到任何文档。在Vim中做什么?
gn
。它将搜索结果转换为文本对象。另外,它现在已经实现了。
由于这evil
是我所知道的唯一积极开发的vim仿真模式,因此我将针对特定问题给出答案。evil
具有高度的可用性,并且非常类似于vim的体验,但是有一些vim功能很可能不会(通过设计)实现,而某些功能是不完整的,但最终可能会添加。一些最有可能不会添加的示例:
C-a
和C-x
),因为这C-x
对Emacs键盘绑定来说太重要了。\
绑定evil-execute-in-emacs-state
。C-u
不需要默认向上滚动,因为它作为Emacs键盘绑定太重要了(尽管您可以使用来覆盖它evil-want-C-u-scroll
)。要查找尚未实现的vim功能列表(截至编写此答案时),最好的查看方法是问题跟踪器。随机抽取清单上的事物:
还有更多的东西,包括不在公开问题列表中的ex
命令(特别是复杂的命令),但是从列表中可以看出,它们往往是次要的或模糊的vim功能(vim是一个相当大的目标,可用于达到100%的功能均等)。