这一直困扰着我很长一段时间。我喜欢使用wildmenu在命令模式下浏览目录。问题是,为了进入子目录,我需要使用始终无法访问的<down>
密钥。我试图做一些映射来克服这个问题,但没有成功。例如:
cnoremap <C-j> <DOWN>
但是如果我想在wildmenu中输入一个子目录时按<C-j>
,菜单就会消失,^I
会出现在命令行的末尾。知道如何解决这个问题吗?
答案 0 :(得分:3)
我可以重现这一点。看起来命令行映射(与<Tab>
相同,而不仅仅是<Down>
)不会在wildmenu模式下解释,而是退出它并按字面插入'wildchar'
。您可以将此报告给vim_dev mailing list。我认为还需要wildmenuvisible()
类似于pumvisible()
的函数,因此映射的行为可能会有所不同,具体取决于wildmenu当前是否处于活动状态。
您可以使用feedkeys()
解决此问题,但是:
function! EnterSubdir()
call feedkeys("\<Down>", 't')
return ''
endfunction
cnoremap <expr> <C-j> EnterSubdir()
答案 1 :(得分:3)
Christian Brabandt想出了一个different solution on vim_dev:要使原始映射生效,您需要将'wildcharm'
设置为与'wildchar'
相同的值:
:let &wildcharm = &wildchar
:cnoremap <C-j> <DOWN>
答案 2 :(得分:0)
这可能是 Vim 补丁 8.2.2221 修复的错误。