Vimを使用していて、多くのサブディレクトリを持つコード(例:〜/ trunk /)で満たされたディレクトリが与えられている場合、ソースコード全体でtext/regexeのインスタンスをgrep/searchする方法はありますか?
現在私が使用しているもの:
:lcd ~/trunk
:grep "pattern" *.py */*.py */*/*.py */*/*/*.py
(明らかに、これをPythonファイルに限定しています。これは別の問題ですが、検索を特定の拡張子を持つファイルに限定したいのは理想的です。)
:vimgrep "pattern" ~/trunk/**/*.py
:copen 20
かなり大きなプロジェクトがある場合は、 cscope および vim plugins を使用することをお勧めします。以下は、大きなプロジェクトを処理するために設計されたものです: SourceCodeObedience
grep textSourceCodeObedience を使用する方法の簡単な説明があります。
そのために直接grepを使用します。
grep -IirlZ "pattern" .|xargs -0 vim
-I: ignore binary
-i: ignore case
-r: recursive
-l: print file name only
-Z: print \0 after each file name
チェックアウトすることをお勧めします:vimgrep
および:grep
vimドキュメント。 :vimgrep
は、vim独自のパターン検索機能を使用して、すべてのファイルをvimバッファーに読み込みます。 :grep
はデフォルトでシステムの外部grep
ユーティリティにリンクしますが、grepprg
オプションを設定することで動作を変更できます。オンラインドキュメントへのリンクは次のとおりです。
http://vimdoc.sourceforge.net/htmldoc/quickfix.html#grep
Vim Tips Wikiの「Vim内のファイルを検索する」のヒントには、その詳細とその他のいくつかのオプションがあります。
grepprg
を Ack に設定し、:grep
を使用してAckで検索します。
またはctagsを使用します。
Ag
は、パターンを再帰的に検索するのに適したオプションです。