2010-01-31 20 views
6

Dopo una prova di completamento, omnicppcomplete visualizzerà tutte le voci possibili nel menu a comparsa. Per selezionare una determinata voce nel menu, si dovrebbe usare <C-N> e <C-p> per passare avanti e indietro tra diversi elementi. Sento che è molto inconviente. Dovrebbe essere molto bello se è possibile utilizzare j e k per effettuare <C-N> e <C-P>. quindi come dovrei fare?come mappare le chiavi per il menu popup in vim

+3

solo un suggerimento. mappare j e k non consentirebbe di completare le parole con i caratteri je k in esse. potresti volerlo usare. invece ctrl-j e ctrl-k o simili. – michael

risposta

8
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

Io preferisco usare il tasto Tab per il completamento (non sono sicuro dove ho ottenuto questo da):

"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> 
Problemi correlati