2010-01-31 17 views
6

Después de una prueba de finalización, omnicppcomplete mostrará todos los elementos posibles en el menú emergente. Para seleccionar un elemento determinado en el menú, se debe usar <C-N> y <C-p> para alternar entre diferentes elementos. Siento que es muy inconveniente. Debería ser muy bueno si se pueden usar j y k para tener lugar de <C-N> y <C-P>. Entonces, ¿cómo debería hacer?cómo asignar teclas para el menú emergente en vim

+3

sólo una sugerencia. mapear j y k no permitiría completar palabras con los caracteres j y k en ellas. es posible que desee usar. ctrl-j y ctrl-k o similar en su lugar. – michael

Respuesta

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

Yo prefiero usar la tecla de tabulación para la terminación (no estoy seguro de dónde saqué esto desde):

"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> 
Cuestiones relacionadas