2010-01-31 19 views
6

Nach einem Abschluss versuchen, Omnicppcomplete zeigt alle möglichen Elemente im Popup-Menü. Um ein bestimmtes Element im Menü auszuwählen, sollten Sie <C-N> und <C-p> verwenden, um zwischen verschiedenen Elementen hin- und herzuschalten. Ich fühle, dass es sehr unvorteilhaft ist. Es sollte sehr cool sein, wenn und k verwendet werden können, um statt <C-N> und <C-P> statt. also wie soll ich tun?Wie Sie Tasten für Popup-Menü in vim zuordnen

+3

nur ein Vorschlag. Das Zuordnen von j und k würde es unmöglich machen, Wörter mit den j- und k-Zeichen in ihnen zu vervollständigen. Sie möchten vielleicht verwenden. ctrl-j und ctrl-k oder ähnlich stattdessen. – michael

Antwort

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

ziehe ich die Tab-Taste für den Abschluss mit (ich bin nicht sicher, wo ich das von bekam):

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