2010-01-31 37 views
6

Sau khi hoàn tất, omnicppcomplete sẽ hiển thị tất cả các mục có thể có trong menu bật lên. Để chọn một mục nhất định trong menu, bạn nên sử dụng <C-N><C-p> để chuyển đổi qua lại giữa các mục khác nhau. Tôi cảm thấy nó rất bất tiện. Sẽ rất tuyệt nếu có thể sử dụng jk để thay thế cho <C-N><C-P>. vậy tôi nên làm thế nào?cách ánh xạ các phím cho menu bật lên trong vim

+3

chỉ là một gợi ý. ánh xạ j và k sẽ không cho phép hoàn thành các từ có ký tự j và k trong chúng. bạn có thể muốn sử dụng. ctrl-j và ctrl-k hoặc tương tự thay thế. – michael

Trả lời

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

Tôi thích sử dụng phím tab để hoàn thành (Tôi không chắc chắn nơi tôi nhận này từ):

"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> 
Các vấn đề liên quan