「インクルードファイルのスキャン」にCtrl-nの完了に時間がかかる


15

私はvimスキルを磨き、Ctrl-nコマンドを使用して完了をいじっています。Perlでプログラミングしています。挿入モードでCtrl-nを押すと、ターミナルの下部に「含まれるファイルをスキャンしています」というメッセージが表示され、perl配布ディレクトリのファイルをスキャンしているように見えます。これが完了するまでに数秒かかる場合があります。私がインクルードしたパッケージでコメントアウトされているように見えます:

#use Moose;

この機能を有効にするには、これらの行を削除する必要があります。何か不足していますか?

perl-supportプラグインを使用しています。


私はの.vimrcにこのような何かをしようとしたが、それは効果に持っていた:let g:ctrlp_custom_ignore = { 'dir': '^/usr/' } let g:ctrln_custom_ignore = { 'dir': '^/usr/' }
StevieD

回答:


13

デフォルトでは、C-nまたはC-pを押すと、Vimはさまざまなソースを調べて、補完メニューを表示する候補を見つけます。

これらのソースは、バッファローカル'complete'オプションで構成できます。

このオプションの値は、フラグのコンマ区切りリストです。各フラグには、以下で説明する独自の意味があり:h 'cptます。

.   scan the current buffer ('wrapscan' is ignored)
w   scan buffers from other windows
b   scan other loaded buffers that are in the buffer list
u   scan the unloaded buffers that are in the buffer list
U   scan the buffers that are not in the buffer list
k   scan the files given with the 'dictionary' option
kspell  use the currently active spell checking |spell|
k{dict} scan the file {dict}.  Several "k" flags can be given, patterns are valid too.  For example:  
        :set cpt=k/usr/dict/*,k~/spanish
s   scan the files given with the 'thesaurus' option
s{tsr}  scan the file {tsr}.  Several "s" flags can be given, patterns are valid too.
i   scan current and included files
d   scan current and included files for defined name or macro |i_CTRL-X_CTRL-D|
]   tag completion
t   same as "]"

デフォルトでは、その値は.,w,b,u,t,iであり、次のことを意味します。

   1. the current buffer
   2. buffers in other windows
   3. other loaded buffers
   4. unloaded buffers
   5. tags
   6. included files

含まれているファイルのスキャンに時間がかかりすぎる場合はi'cpt'オプションからフラグを削除してみてください。

グローバル値からそれを削除したい場合、デフォルトですべてのバッファに影響を与えるには、次のように記述しますvimrc

setglobal complete-=i

perlファイルに対してのみ同じことをしたい場合は、次の場所にautocmdをインストールできますvimrc

augroup PerlSettings
    autocmd!
    autocmd FileType perl setlocal complete-=i
augroup END

または、ファイルタイププラグインを作成することもできます。たとえば、~/.vim/after/ftplugin/perl.vimで、次のように記述します。

setlocal complete-=i

'complete'オプションの現在のグローバル値とローカル値、およびそれらが最後に設定された場所を確認するには、次のコマンドを使用できます。

verbose setglobal complete?
verbose setlocal complete?

または短く:

verb setg cpt?
verb setl cpt?

関心のある唯一のソースが現在のバッファである場合、を使用する代わりにを使用C-nできますC-x C-n。詳細については:h i_^x^n、を参照してください。


1
特定のパスのファイル内のキーワードを除外する方法はありますか?
スティービー

Vimのドキュメントに'complete'は「インクルードファイル」が記載されていますが、それが何を意味するかについての詳細にはリンクしないでください。だから、読んでください:he include-search。ここで、'include'オプションがその意味を定義し'path'、検索に使用されていることがわかります。これらは、機能全体をオン/オフするだけでなく、より細かいカスタマイズを行うのに役立ちます。
jwd
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.