我非常喜欢Vim,并定义了很多关键映射,使编辑文本更流畅,更容易。并且因为zsh提示符有一个vi模式,它使用vi的默认配置,我想知道是否可以告诉zsh使用在一个.vimrc中配置的vi。
想法,有人吗?
许多应用程序提供“vi映射”;通常,这些仅限于常见的导航(hjkl
)和简单的编辑操作(<C-w>
,<C-u>
)。这些应用程序实际上并不运行vi / Vim;他们只是提供类似的键绑定。我见过的最全面的支持是针对像Eclipse这样通过:map
命令提供定制的IDE的“vi插件”。但是,所有这些都不符合~/.vimrc
中可用的完整Vimscript语法,以及您可能已安装的所有插件。
正如其他人已经评论过的那样,你可以实现的最好的方法是通过定义相应的zsh键绑定来重建~/.vimrc
中的简单重映射(并在每次调整或添加一些时保持它们同步)。
另一种恢复编辑效率的方法实际上是使用Vim来编辑命令行。我不特别了解zsh,但是Bash为前一个命令行提供了fc
命令,可以通过set -o vi
编辑当前的命令(在<Esc>v
模式下),并且还提供了对edit-and-execute-command
的插入模式的绑定,需要配置在~/.inputrc
:
$if Bash
# Ctrl-F Invoke the editor on the current command line.
# Like c_CTRL-F in Vim.
# Related: fc does the same for the _previous_ command.
Control-f: edit-and-execute-command
$endif
我想至少其中一些选项也可以在zsh中使用。它们唯一的缺点是Vim的启动和退出会引入一些延迟和额外的键入键,所以只有更复杂的命令行编辑才值得。