当打开命令行并按上箭头或下箭头键时,它会显示上次键入的命令。是否有办法映射此行为?例如,当我按下ctrl p
时,我希望vim显示我以前的命令(使vim表现得像我按了上箭头)。对于下一个命令,ctrl n
也是同样的。
如何实现这一点呢?
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>
这种方法的缺点是,在wildmenu上CTRL-P
和CTRL-N
的行为不同,因此更完整的映射应该是:
这种方法的短处在于,对于wildmenu来说,CTRL-P
和CTRL-N
的行为不同,因此一个更完整的映射如下:
cnoremap <expr> <C-P> wildmenumode() ? "\<C-P>" : "\<Up>"
cnoremap <expr> <C-N> wildmenumode() ? "\<C-N>" : "\<Down>"
这将保留在野菜单中CTRL-P
和CTRL-N
的原始行为。
:
然后使用Ctrl + p
导航到上一个。 - Tarek Dakhran