如何映射vim中弹出菜单的键

如何映射vim中弹出菜单的键,vim,Vim,完成尝试后,OmnicpComplete将在弹出菜单中显示所有可能的项目。要选择菜单中的某个项目,应使用和在不同项目之间来回切换。我觉得这很不协调。如果可以用j和k来代替和,那就太酷了。那我该怎么办呢 函数!全向弹出窗口(操作) function! OmniPopup(action) if pumvisible() if a:action == 'j' return "\<C-N>" elseif a:action ==

完成尝试后,OmnicpComplete将在弹出菜单中显示所有可能的项目。要选择菜单中的某个项目,应使用
在不同项目之间来回切换。我觉得这很不协调。如果可以用
j
k
来代替
,那就太酷了。那我该怎么办呢

函数!全向弹出窗口(操作)
function! OmniPopup(action)
    if pumvisible()
        if a:action == 'j'
            return "\<C-N>"
        elseif a:action == 'k'
            return "\<C-P>"
        endif
    endif
    return a:action
endfunction

inoremap <silent>j <C-R>=OmniPopup('j')<CR>
inoremap <silent>k <C-R>=OmniPopup('k')<CR>
如果可见() 如果a:action='j' 返回“\” elseif a:action==“k” 返回“\” 恩迪夫 恩迪夫 返回a:操作 端功能 inoremap j=OmniPopup('j') inoremap k=OmniPopup('k')
我更喜欢使用tab键完成(我不确定这是从哪里得到的):

“选项卡已完成
函数!InsertTabWrapper(方向)
设col=col('.')-1
if!col | | getline('.')[col-1]!~'\k'
返回“\”
elseif“向后”==a:方向
返回“\”
其他的
返回“\”
恩迪夫
端功能
inoremap=InsertTabWrapper(“向前”)
inoremap=InsertTabWrapper(“向后”)

CTRL+J
CTRL+K
取而代之:(因此您可以键入
J
K

inoremap pumvisible()?“\”:“\”
inoremap pumvisible()?“\”:“\”
奖励:
选择该选项

inoremap <expr><Cr>  pumvisible() ? "\<C-y>" : "\<Cr>"
inoremap pumvisible()?“\”:“\”

只是一个建议。映射j和k将不允许用j和k字符来完成单词。您可能需要使用.ctrl-j和ctrl-k或类似的字符。
inoremap <expr><C-J> pumvisible() ? "\<C-n>" : "\<C-J>"
inoremap <expr><C-K> pumvisible() ? "\<C-p>" : "\<C-K>"
inoremap <expr><Cr>  pumvisible() ? "\<C-y>" : "\<Cr>"