这一直困扰着我很长时间。我喜欢使用 wildmenu 在命令模式下浏览目录。问题是要进入子目录,我需要使用<down>
总是遥不可及的密钥。我试图做一些映射来克服这个问题,但没有成功。例如:
cnoremap <C-j> <DOWN>
但是如果我<C-j>
想在wildmenu中输入子目录时按下,菜单就会消失并^I
出现在命令行的末尾。知道如何解决这个问题吗?
这一直困扰着我很长时间。我喜欢使用 wildmenu 在命令模式下浏览目录。问题是要进入子目录,我需要使用<down>
总是遥不可及的密钥。我试图做一些映射来克服这个问题,但没有成功。例如:
cnoremap <C-j> <DOWN>
但是如果我<C-j>
想在wildmenu中输入子目录时按下,菜单就会消失并^I
出现在命令行的末尾。知道如何解决这个问题吗?
Christian Brabandt 在 vim_dev 上提出了一个不同的解决方案:为了使您的原始映射正常工作,您需要设置'wildcharm'
为与以下相同的值'wildchar'
:
:let &wildcharm = &wildchar
:cnoremap <C-j> <DOWN>
我可以重现这个。看起来命令行映射(与 相同<Tab>
,而不仅仅是<Down>
)不是在 wildmenu 模式下解释的,而是退出它并插入'wildchar'
字面意思。您可以将此报告给vim_dev 邮件列表。我认为还需要一个wildmenuvisible()
类似的功能pumvisible()
,以便映射可以根据野菜单当前是否处于活动状态而表现不同。
不过,您可以使用 解决此问题feedkeys()
:
function! EnterSubdir()
call feedkeys("\<Down>", 't')
return ''
endfunction
cnoremap <expr> <C-j> EnterSubdir()
这可能是 Vim 补丁8.2.2221修复的错误。