Vim - 命令行 - 上一个和下一个命令键映射

Das*_*San 4 mapping vim command line

打开命令行并按向上箭头或向下箭头键时,它会显示上次键入的命令。有没有办法映射这种行为?例如,当我按下 时ctrl p,我希望 vim 显示我之前的命令(让 vim 表现得好像我按下了向上箭头)。同样的事情对于ctrl n下一个命令。

我怎样才能做到这一点?

fil*_*den 7

CTRL-PCTRL-N按键已经做你想要什么,他们搜索您的命令历史记录。请参阅:help c_CTRL-P,它解释了它将如何“从历史记录中调用旧的命令行”。

方式CTRL-PCTRL-N工作与向上和向下箭头略有不同,因为箭头只会穿过历史记录中以您键入的字符开头的项目。因此:e,空格、向上箭头将转到您用来打开文件进行编辑的最后一个命令。详情请参阅:help c_<Up>

您可以使用该cnoremap命令重新映射它们,以便它们与对应的对象执行相同的操作,该命令为在 Vim 命令行中键入的击键创建映射。

例如,要制作CTRL-PCTRL-N行为与箭头相同(完全尊重前缀),您可以使用以下命令创建(有点幼稚)映射:

cnoremap <C-P> <Up>
cnoremap <C-N> <Down>
Run Code Online (Sandbox Code Playgroud)

这种方法的缺点是CTRL-PCTRL-N在野生菜单上的行为不同,因此更完整的映射将是:

cnoremap <expr> <C-P> wildmenumode() ? "\<C-P>" : "\<Up>"
cnoremap <expr> <C-N> wildmenumode() ? "\<C-N>" : "\<Down>"
Run Code Online (Sandbox Code Playgroud)

这将保留CTRL-PCTRL-N在wildmenu 中的原始行为。