2010-01-31 5 views
6

Après un essai d'achèvement, omnicppcomplete affichera tous les éléments possibles dans le menu contextuel. Pour sélectionner un élément particulier dans le menu, il faut utiliser <C-N> et <C-p> pour basculer entre différents éléments. Je pense que c'est très inconvenant. Il devrait être très cool si j et k peut être utilisé pour avoir lieu de <C-N> et <C-P>. alors comment dois-je faire?comment mapper les touches du menu contextuel dans vim

+3

juste une suggestion. la mise en correspondance de j et k ne permettrait pas de compléter les mots avec les caractères j et k qui s'y trouvent. vous pourriez vouloir utiliser. ctrl-j et ctrl-k ou similaire à la place. – michael

Répondre

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

Je préfère utiliser la touche de tabulation pour l'achèvement (Je ne sais pas où je suis arrivé ce billet depuis):

"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> 
Questions connexes