1

クレイジーな小さな挑戦があります。タブとシフト+タブをvimの基本的なタブ補完に再マップしたいと思います。これが私が始めたところです:

set completeopt=
inoremap <tab> <C-n>
inoremap <S-tab> <C-p>

それはまったく効果がありませんでした。また、スニペットプラグインが台無しになっている可能性があることにも気付きました. グーグルで調べてみると、 http://vim.wikia.com/wiki/Smart_mapping_for_tab_completionが見つかりましたが、提案を実装するのはほとんど運がありませんでした。

スニペット機能を失わずに、タブとシフト + タブにマップしたいと思います。どんな助けでも揺れるでしょう!

更新:私も今運でこれを試しました。目に見える効果はありませんでした。

fu! InsertTabWrapper(direction)
  let char_before = col('.') - 1
  if !char_before || getline('.')[char_before - 1] !~ '\k'
    return "\<tab>"
  elseif "backward" == a:direction
    return "\<c-p>"
  else
    return "\<c-n>"
  endif
endfu
inoremap <tab> <c-r>=InsertTabWrapper("forward")<cr>
inoremap <s-tab> <c-r>=InsertTabWrapper("backward")<cr>
4

1 に答える 1

1

<tab>マッピングがvimの頭痛の種であることに同意します。

個人的には、 SuperTabNeocompletecacheSnipmate 、およびpydictionを使用しています。これらを連携させるには本当に時間がかかりました<tab>。(おそらく) 完璧でなくても、毎日の使用には十分です。

問題に戻ると、superTabhttps://github.com/ervandew/supertab)というプラグインをインストールして.vimrc、次の行を追加することを検討できます。

let g:SuperTabDefaultCompletionType = 'context'
let g:SuperTabContextTextOmniPrecedence = ['&omnifunc','&completefunc']
let g:SuperTabRetainCompletionType=2

inoremap <expr><Enter>  pumvisible() ? "\<C-Y>" : "\<Enter>"
inoremap <expr><TAB>  pumvisible() ? "\<C-n>" : "\<TAB>"

それから....頑張ってください...それがあなたの要件に合うことを願っています。

于 2013-03-26T17:53:11.467 に答える