不使用方向键,如何在vim命令历史中进行反向搜索补全?

4

有没有一种选项可以自动完成当前正在输入的命令,使其与历史记录中的一个命令匹配,而不使用方向键? 这是对这个问题的扩展:如何在vim的命令历史记录中搜索?

答案是,在输入:somecommand之后使用<up>键。 我认为更符合vim的风格的做法是不必抬起手去按方向键。

:help cmdline-completion中,我尝试了Ctrl-NCtrl-PCtrl-DCtrl-L,但都没有成功。 以下是我的vimrc中可能相关的部分:

set completeopt=menu,longest,preview
set showcmd     
set wildchar=<Tab> wildmenu wildmode=longest,list,full
set wildcharm=<C-Z>

我知道可以使用q::Ctrl-F调用命令行窗口,然后使用Ctrl-NCtrl-P在键入:后线性浏览历史记录。

1个回答

2
您可以将其映射到其他内容。我曾经尝试使用
cnoremap <C-p> <Up>

但是这样做会禁用补全循环,因此您最好想出其他的方式(没有像pumvisible()这样的方法可以确定命令模式下是否启用了补全)。


谢谢。我不知道“c”映射。看起来对我有用的是: :cmap <C-k> <up> 和 :cmap <C-j> <down> 我会等一下,看看是否还有其他选项。 - e-malito
@elmanuelito 【永远不要使用cmap。】(http://learnvimscriptthehardway.stevelosh.com/chapters/05.html) - ZyX
是的,那只是为了测试,我加了一个cnoremap以确保安全。除此之外,你认为我从使用这两个映射中错过了很多vim命令和功能吗?如果没有,而且如果没有其他人给我们提供没有副作用的选项,你能否编辑你的答案并加入这些映射呢? - e-malito
@elmanuelito 我从未在命令模式下使用过二合字(因为我有音译插件可以输入奇怪的字符)。而且 <C-j> 已经被 <CR> 覆盖了,所以应该没问题。 - ZyX

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接