フォルダ内のテキストを検索し、検索結果をVimの別のバッファに表示する方法はありますか?(Sublime TextCtrl + Shift + F
の結果のように)
3 に答える
いいえ、プラグインは必要ありません。デフォルト:vimgrep
(または:vim
)はあなたが必要とするすべてです。
foo
現在のディレクトリ内のすべてのファイルを検索します。
:vim foo * | cw
foo
現在のディレクトリ内のすべてのJavaScriptファイルを検索します。
:vim foo *.js | cw
foo
現在のディレクトリ内のすべてのJavaScriptファイルを再帰的に検索します。
:vim foo **/*.js | cw
現在のディレクトリ内のすべてのファイルで現在の単語を検索します。
:vim <C-r><C-w> * | cw
:vim <cword> * | cw
(編集::cw[indow]
代わりに使用:copen
)
必要なようですねack.vim
:
このプラグインは、PerlモジュールApp::Ackのフロントです。Ackは、grepの使用の99%の代わりに使用できます。このプラグインを使用すると、vimからackを実行でき、結果が分割ウィンドウに表示されます。
使用法:
:Ack [options] {pattern} [{directory}]
Search recursively in {directory} (which defaults to the current directory) for the {pattern}.
検索語を含むファイルは、オカレンスごとに1回、オカレンスの行番号とともに分割ウィンドウに一覧表示されます。このウィンドウの行に[Enter]を押すと、ファイルが開き、一致する行にカーソルが置かれます。
:grep
Vimコマンドは、検索を外部ツールgrep
(またはack
を介して設定されたのような互換性のある代替ツール)に委任し'grepprg'
ます。:vimgrep
または、 Vim内で検索を実行するを使用することもできます。これにより、同じVimスタイルの正規表現とグロブパターン(のような**/
)を使用できますが、各ファイルがVimバッファーに読み込まれるため、通常は遅くなります。
どちらのコマンドもクイックフィックスウィンドウに結果を表示し、そこから一致に移動できます。
このためのプラグインは必要ありませんが、処理を簡単にしたり、さまざまな検索コマンドをサポートしたりするために利用できるプラグインがいくつかあります(たとえば、すでに述べたack.vim)。