如何让 zsh 提示 vi 模式使用我的 .vimrc?
How to make zsh prompt vi mode use my .vimrc?
我非常喜欢Vim,并且定义了很多键映射,使编辑文本更加顺畅和容易。由于 zsh 提示符有一个 vi 模式,它使用 vi 的默认配置,我想知道是否可以告诉 zsh 使用 .vimrc 中配置的 vi。
想法,有人吗?
许多应用程序提供"vi mappings";通常,这些仅限于常见的导航 (hjkl
) 和简单的编辑操作 (<C-w>
、<C-u>
)。这些应用程序实际上并不 运行 vi / Vim;他们只是提供类似的键绑定。我见过的最全面的支持是 "vi plugins" 对 IDE 的支持,例如通过 :map
命令提供自定义的 Eclipse。但是,所有这些都达不到 ~/.vimrc
中可用的完整 Vim 脚本语法,以及您可能已安装的所有插件。
正如其他人已经评论的那样,您可以实现的最佳效果是通过定义相应的 zsh 键绑定(并在您调整或添加一些键绑定时保持它们同步)从您的 ~/.vimrc
重建简单的重新映射。
备选方案:启动外部 Vim
恢复编辑效率的另一种方法实际上是使用 Vim 来编辑命令行。我不太了解 zsh,但是 Bash 为前一个命令行提供 fc
命令,可以通过 [=19= 编辑当前命令行(在 set -o vi
模式下) ],并且还为插入模式提供了到 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 的启动和退出引入了一些延迟和额外的键入键,因此只有对更长的命令行进行更复杂的编辑才值得。
我非常喜欢Vim,并且定义了很多键映射,使编辑文本更加顺畅和容易。由于 zsh 提示符有一个 vi 模式,它使用 vi 的默认配置,我想知道是否可以告诉 zsh 使用 .vimrc 中配置的 vi。
想法,有人吗?
许多应用程序提供"vi mappings";通常,这些仅限于常见的导航 (hjkl
) 和简单的编辑操作 (<C-w>
、<C-u>
)。这些应用程序实际上并不 运行 vi / Vim;他们只是提供类似的键绑定。我见过的最全面的支持是 "vi plugins" 对 IDE 的支持,例如通过 :map
命令提供自定义的 Eclipse。但是,所有这些都达不到 ~/.vimrc
中可用的完整 Vim 脚本语法,以及您可能已安装的所有插件。
正如其他人已经评论的那样,您可以实现的最佳效果是通过定义相应的 zsh 键绑定(并在您调整或添加一些键绑定时保持它们同步)从您的 ~/.vimrc
重建简单的重新映射。
备选方案:启动外部 Vim
恢复编辑效率的另一种方法实际上是使用 Vim 来编辑命令行。我不太了解 zsh,但是 Bash 为前一个命令行提供 fc
命令,可以通过 [=19= 编辑当前命令行(在 set -o vi
模式下) ],并且还为插入模式提供了到 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 的启动和退出引入了一些延迟和额外的键入键,因此只有对更长的命令行进行更复杂的编辑才值得。