vim wildmenu:使用与<dow​​n> </down>不同的键移动到子目录中

时间:2013-02-12 22:24:27

标签: vim

这一直困扰着我很长一段时间。我喜欢使用wildmenu在命令模式下浏览目录。问题是,为了进入子目录,我需要使用始终无法访问的<down>密钥。我试图做一些映射来克服这个问题,但没有成功。例如:

cnoremap <C-j> <DOWN>

但是如果我想在wildmenu中输入一个子目录时按<C-j>,菜单就会消失,^I会出现在命令行的末尾。知道如何解决这个问题吗?

3 个答案:

答案 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 修复的错误。