как сопоставить ключи для всплывающего меню в vim - PullRequest
7 голосов
/ 31 января 2010

После завершения попытки, omnicppcomplete отобразит все возможные элементы во всплывающем меню. Чтобы выбрать определенный элемент в меню, необходимо использовать <C-N> и <C-p> для переключения между различными элементами. Я чувствую, что это очень неудобно. Должно быть очень круто, если вместо <C-N> и <C-P> можно использовать j и k. так как мне поступить?

Ответы [ 2 ]

9 голосов
/ 31 января 2010
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>
1 голос
/ 31 января 2010

Я предпочитаю использовать клавишу табуляции для завершения (я не уверен, откуда я это взял):

"tab complete
function! InsertTabWrapper(direction)
    let col = col('.') - 1
    if !col || getline('.')[col - 1] !~ '\k'
        return "\<tab>"
    elseif "backward" == a:direction
        return "\<c-p>"
    else
        return "\<c-n>"
    endif
endfunction
inoremap <tab> <c-r>=InsertTabWrapper ("forward")<cr>
inoremap <s-tab> <c-r>=InsertTabWrapper ("backward")<cr>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...