web-dev-qa-db-ja.com

プロジェクト/フォルダ全体でWordを再帰的に検索するにはどうすればよいですか?

フォルダー内のJFactoryクラスとそのサブディレクトリを検索するとします。

class JFactoryを含むファイルをファイルするにはどうすればよいですか?

そのWordを置き換えたくありませんが、class JFactoryを含むファイルを見つける必要があります。

53
shibly
:vimgrep /JFactory/ **/*.Java

完全なWord一致が必要な場合は、パターン/JFactory//\<JFactory\>/に置き換えることができます。 :vim:vimgrepの省略形です。

JFactoryまたは\<JFactory\>が現在の検索パターンである場合(たとえば、一度に*にヒットした場合)、空の検索パターン:vimgrep // **/*.Javaを使用できます。代わりに最後の検索パターン。ハンディ!

警告::vimgrepは、有効な場合にautocmdsをトリガーします。これにより、検索が遅くなる可能性があります。あなたがそれをしたくない場合は、次のことができます:

:noautocmd vimgrep /\<JFactory\>/ **/*.Java

より速くなります。ただし、構文の強調表示をトリガーしたり、解凍したgzファイルを開いたりすることはありません.

外部プログラムでパターンをgrepしたい場合は、次のようなことができることに注意してください。

:set grepprg=ack
:grep --Java JFactory

Ackは、grepの代わりにPerlで作成されたものです。その場合、Perl正規表現に切り替える必要があることに注意してください。

選択したコマンドが返されたら、:help quickfixのVimドキュメントで説明されているコマンドを使用して、検索結果を参照できます。 :cfirst:cnext:cprevious:cnfileなどのルックアップ.

2014年の更新:the_silver_searcherまたはthe_platinum_searcherおよびag.vimまたはunite.vimプラグインを使用して、これを行う新しい方法があります。

76
Benoit

プロジェクトのルートフォルダから、次を実行します。

grep -H -r 'what_you_search' * | less

フォルダとその文字列に一致する行のリストを取得します。

16
Karlo Smid

シルバーサーチャー( https://github.com/ggreer/the_silver_searcher )強くお勧めします。

install

Sudo pacman -S the_silver_searcher  // Arch Linux 
Sudo apt install silversearcher-ag  // ubuntu

使用法

$ ag keywords

vimと統合する

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

インストール後

:Ag keywords
8
Anthony Zhan

ctagscscope を見て、クラスと関数の定義にジャンプし、それらの関数/クラスが使用されている場所を見つけてください。

2
Ken

このスクリプトが役立つ場合があります: Filesearch

1
Jeet

次の方法でコマンドラインウィンドウを開きます。

Esc-通常モードになっていることを確認します

タイプq、タイプ:

コマンドラインが開くはずです(コマンドを書くためのtmpファイルのように、vimファイルで通常ナビゲートするようにナビゲートできます...

iを入力して挿入モードに入ります

この例では、タイプ '。js'および '。Java'のすべてのファイルタイプの現在のディレクトリの下でto_srch文字列を再帰的に検索しますが、文字列node_modulesを含むすべてのファイルパスを省略します。

:g/console.log/ | :vimgrep /console.log/ `find . -type f -name '*.js' -o -name '*.Java' -not -path '*node_modules/*'`

さて、あなたは:copen矢印キーで検索結果をナビゲートできます...

また、それらを.vimrcに設定することもできます

    " how-to search recursively under the current dir for the files of type js and Java but omit the
    " node_modules file paths
    ":g/console.log/ | :vimgrep /console.log/ `find . -type f -name '*.js' -o -name '*.Java' -not -path '*node_modules/*'`
    " reminder open the quick fix window by :copen 20
    " reminder close the quick fix window by :ccl

最初の:q/to_srch /は省略できます。〜/ .vimrcに「set hlsearch」があるため、検索結果を自動的に強調表示するために使用します。

Srchの結果をvimgrepから、またはvimrcで自動的に有効にするヒントは非常に高く評価されます...

0
Yordan Georgiev