3

vimのデフォルトの動作は、最初に見つかった一致を書き留め、他のすべてのドロップダウンメニューを表示することです。これを使用してコード(ライブラリの関数名など)をオートコンプリートする場合、最長の単語を選択し、単語の半分を削除するか手動で検索するのに手間がかかる長いリストをドロップするため、使用するのが面倒なことがよくあります。類似の単語のメニュー。

例:私はOpenCVを使用しており、cvCr(<Ctrl-x><Ctrl-o>)それを書くcvCreate2DHMMと、メニューに20〜30個の項目がすべて。で始まりcvCreateます。次に、単語の半分を削除するか、メニューで手動で検索する必要があります。

ほとんどのIDEと同じように、最も長い一般的な一致のみを書き留めるように動作を変更する簡単な方法があります(マニュアルに記載されており、見つける方法を知っています)。

ただし<Ctrl-x>s、スペルミスを修正するために使用する場合は、デフォルトの動作を好みます。

自動完了ごとに動作を個別に設定する方法はありますか?

4

1 に答える 1

1

longestオプションから切り替えたいということです'completeopt'か?

次のように、完了トリガーを上書きし:map-expr、オプションを変更するために no-op を追加する必要があります。

function! CompleteoptLongest( isEnable )
    set completeopt-=longest
    if a:isEnable
        set completeopt+=longest
    endif
    return ''
endfunction
:inoremap <expr> <SID>CompleteoptLongestOn CompleteoptLongest(1)
:inoremap <expr> <SID>CompleteoptLongestOff CompleteoptLongest(0)

:inoremap <script> <C-n> <SID>CompleteoptLongestOn<C-n>
" Repeat for all other completion commands you use...

:inoremap <script> <C-x><C-s> <SID>CompleteoptLongestOff<C-x><C-s>
于 2013-01-03T11:46:32.320 に答える