web-dev-qa-db-ja.com

Vimですべてのソースコードをどのように検索しますか?

Vimを使用していて、多くのサブディレクトリを持つコード(例:〜/ trunk /)で満たされたディレクトリが与えられている場合、ソースコード全体でtext/regexeのインスタンスをgrep/searchする方法はありますか?

現在私が使用しているもの:

:lcd ~/trunk
:grep "pattern" *.py */*.py */*/*.py */*/*/*.py

(明らかに、これをPythonファイルに限定しています。これは別の問題ですが、検索を特定の拡張子を持つファイルに限定したいのは理想的です。)

42
Brian M. Hunt
:vimgrep "pattern" ~/trunk/**/*.py
:copen 20

かなり大きなプロジェクトがある場合は、 cscope および vim plugins を使用することをお勧めします。以下は、大きなプロジェクトを処理するために設計されたものです: SourceCodeObedience

grep textSourceCodeObedience を使用する方法の簡単な説明があります。

41
Mykola Golubyev

そのために直接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
7
soulmerge

チェックアウトすることをお勧めします:vimgrepおよび:grep vimドキュメント。 :vimgrepは、vim独自のパターン検索機能を使用して、すべてのファイルをvimバッファーに読み込みます。 :grepはデフォルトでシステムの外部grepユーティリティにリンクしますが、grepprgオプションを設定することで動作を変更できます。オンラインドキュメントへのリンクは次のとおりです。

http://vimdoc.sourceforge.net/htmldoc/quickfix.html#grep

Vim Tips Wikiの「Vim内のファイルを検索する」のヒントには、その詳細とその他のいくつかのオプションがあります。

http://vim.wikia.com/wiki/Find_in_files_within_Vim

6
Herbert Sitz

grepprgAck に設定し、:grepを使用してAckで検索します。

またはctagsを使用します。

4

Agは、パターンを再帰的に検索するのに適したオプションです。

https://github.com/rking/ag.vim

3
Tmx

:vimgrep を使用できます。つまり、

  :vimgrep/pattern/**/*。py 

このVimのヒントを確認してください:

grep.vim も見てください。これは、grep、fgrep、egrep、およびagrepツールをVimと統合し、1つ以上のファイルでパターンを検索してそれらにジャンプできるプラグインです...

2
CMS

ctags を使用してソースコードインデックスを生成し、次にVIM can se this を使用してコードベースをシームレスに移動できます。ソースコードを認識します。メソッド宣言などに直接ジャンプできます。

Ctagsファイルを頻繁に再生成する必要がありますが、makeプロセスの一部として実行できます。コードベースのサイズが大きくない限り、かなり高速です。

1
Brian Agnew