2013-08-17 15 views
19

私はag(シルバーサーチャー)をctrlpとvimで使いたいと思っています。ctrlp + vimでagを使用する

if executable("ag") 
    set grepprg=ag\ --nogroup\ --nocolor 
    let g:ctrlp_user_command = 'ag %s -l --nocolor -g ""' 
endif 

let g:ctrlp_show_hidden = 1 

set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*/.tmp/*,*/.sass-cache/*,*/node_modules/*,*.keep,*.DS_Store,*/.git/* 

私はCTRLPは隠しファイルを含めたいが、それらは隠されている: 私は私の.vimrcでこれを持っています。私が-uをagコマンドに追加すると、すべての隠しファイルが表示されますが、wildignoreまたは.gitignoreは尊重されません。これらを尊重することは可能ですか?

+0

私の答えはあなたの問題を解決しますか?または追加情報が必要ですか? – mcanfield

+0

それは確かです!あなたの答えを受け入れられたとしてマークするのを忘れました。どうもありがとうございました! – Richard

答えて

34

あなたはctrlp_show_hiddenctrlp_custom_ignoreとVimのwildignoreパターンを含むctrlp_user_commandいくつかのオプションを介してカスタムファインダーを使用している場合は、CTRLP(see documentation)で使用されていません。

グラム:

をctrlp_show_hidden ...

注:コマンドが で定義されたときには適用されません| G:ctrlp_user_command |使用中です。

グラム:ctrlp_custom_ignore

...

注#1:デフォルトでは、| wildignore |および| g:ctrlp_custom_ignore | | globpath()|ときにのみ が適用されます。ファイルをスキャンするために使用されるため、これらのオプション は、| gで定義されたコマンドの場合には適用されません:ctrlp_user_command | が使用されています。

あなたの検索ツールの慈悲に任されています。幸いなことに、あなたが望むふるまいを与えるべきカップルのことをすることができます。今無視するパターンを定義するために、あなたはファイル.agignoreを無視AGの専有物を使用することができます

let g:ctrlp_user_command = 'ag %s -l --nocolor --hidden -g ""'

:表示されるように、あなたの隠されたドットファイルを取得しますが、それでもignoreファイルを尊重し、AG用--hiddenオプションを使用するには

。これはディレクトリごと、またはagが各実行時にチェックするグローバルなものにすることができます。それをあなたの家のdir ~/.agignoreに置きます。

vims wildignoreはパターンを扱うのがうれしいことを理解していますが、.agignoreとすると、cliからagを使用した場合の制限のボーナスを得ることができます。すべてのファイルを検索する場合は、前述のag -uコマンドを使用して、ignoreファイルをバイパスしてください。

最終的なおしゃべりとしては、g:ctrlp_user_commandを定義するために使用できる辞書形式があり、ignoreというキーが含まれており、CtrlPを使用するとwildignoreパターンになります。しかし、私はこれを試したことはありませんし、ドキュメンテーションは潜在的なパフォーマンスヒットを指摘します。私の提案した他のソリューション(see documentation)が気に入らない場合は、この方法をお試しください。

注3:|辞書|フォーマットが使用され、 'ignore'が で定義され、1に設定されている場合、| wildignore |および| g:ctrlp_custom_ignore |これらのカスタムコマンドが使用されている場合は、 オプションは適用されません。 が存在しない場合、パフォーマンスを保持するために、デフォルトで 'ignore'が0に設定されています 外部コマンドを使用する利点。

関連する問題