打开命令行并按向上箭头或向下箭头键时,它会显示上次键入的命令。有没有办法映射这种行为?例如,当我按下ctrl p
时,我想让vim向我展示我的上一个命令(使vim像按下向上箭头一样起作用)。下一个命令的ctrl n
同样。
我该如何实现?
CTRL-P
和CTRL-N
击键已经执行所需的操作,它们搜索您的命令历史记录。请参阅:help c_CTRL-P
,其中说明了它如何“从历史记录中调用较旧的命令行。”
:help c_CTRL-P
和CTRL-P
的工作方式与向上和向下箭头略有不同,因为箭头只会浏览历史记录中以您键入的字符开头的项目。因此,CTRL-N
,空格,向上箭头将转到您用来打开文件进行编辑的最后一个命令。有关详细信息,请参见:e
。
您可以使用:help c_<Up>
命令重新映射它们,使其与对应的对象相同,该命令将为在Vim命令行中键入的击键创建映射。
例如,要使:help c_<Up>
和cnoremap
的行为与箭头相同(完全遵守前缀),可以使用以下命令创建(有些天真)的映射:
CTRL-P
此方法的缺点是CTRL-N
和cnoremap <C-P> <Up>
cnoremap <C-N> <Down>
在野菜单上的行为不同,因此更完整的映射将是:
CTRL-P
这将保留野菜单中CTRL-N
和cnoremap <expr> <C-P> wildmenumode() ? "\<C-P>" : "\<Up>"
cnoremap <expr> <C-N> wildmenumode() ? "\<C-N>" : "\<Down>"
的原始行为。