在CTRL-P和CTRL-N按键已经做你想要什么,他们搜索您的命令历史记录。请参阅:help c_CTRL-P,它解释了它将如何“从历史记录中调用旧的命令行”。
方式CTRL-P和CTRL-N工作与向上和向下箭头略有不同,因为箭头只会穿过历史记录中以您键入的字符开头的项目。因此:e,空格、向上箭头将转到您用来打开文件进行编辑的最后一个命令。详情请参阅:help c_<Up>。
您可以使用该cnoremap命令重新映射它们,以便它们与对应的对象执行相同的操作,该命令为在 Vim 命令行中键入的击键创建映射。
例如,要制作CTRL-P和CTRL-N行为与箭头相同(完全尊重前缀),您可以使用以下命令创建(有点幼稚)映射:
cnoremap <C-P> <Up>
cnoremap <C-N> <Down>
Run Code Online (Sandbox Code Playgroud)
这种方法的缺点是CTRL-P和CTRL-N在野生菜单上的行为不同,因此更完整的映射将是:
cnoremap <expr> <C-P> wildmenumode() ? "\<C-P>" : "\<Up>"
cnoremap <expr> <C-N> wildmenumode() ? "\<C-N>" : "\<Down>"
Run Code Online (Sandbox Code Playgroud)
这将保留CTRL-P和CTRL-N在wildmenu 中的原始行为。