2010-01-31 13 views
6

Po zakończeniu próby, omnicppcomplete wyświetli wszystkie możliwe pozycje w wyskakującym menu. Aby wybrać określoną pozycję w menu, należy użyć <C-N> i <C-p>, aby przełączać się między różnymi elementami. Czuję, że jest to bardzo niespójne. Powinno być bardzo fajnie, jeśli można używać j i k do przeprowadzenia <C-N> i <C-P>. więc jak mam to zrobić?jak mapować klawisze dla menu podręcznego w vim

+3

tylko sugestia. mapowanie j i k uniemożliwiłoby wypełnianie słów znakami j i k. możesz użyć. Zamiast tego zamiast nich są ctrl-j i ctrl-k lub podobne. – michael

Odpowiedz

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

Wolę za pomocą klawisza tabulatora do zakończenia (nie jestem pewien, gdzie mam to od):

"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> 
Powiązane problemy