fudist

QFixGrep - 使い方と操作一覧

プレビュー&絞り込み検索付きvim/gvim用日本語対応grepプラグインの使い方

QFixGrep - vim用grepヘルパー | QFixGrep - インストール | QFixGrep - 使い方と操作一覧 | QFixGrep - オプション | Shift_JIS(cp932)の「ダメ文字」トラブルシューティング
 
QFixGrepを使用しない vimとgvimの 「grepの設定と使い方」(別ページ)
vimのgrepの設定と使い方

キー操作の表記<CR>はEnterキーの入力、<C-w>はCtrlキー + w というように読み替えて下さい。

コマンド

なにかファイルを開いてから、以下のいずれかで検索を実行してみて下さい。
カーソル下の単語が自動的に取り込まれて、検索文字列入力画面になります。
入力画面の文字列を削除するには<C-u>や<C-w>を使用してください。
カーソル位置の文字列を拾わないように設定も出来ます。
"QFixGrepの検索時にカーソル位置の単語を拾う/拾わない
let MyGrep_DefaultSearchWord = 1

デフォルトではキーマップリーダーに g が設定されているので、 g,e でGrepが実行されます。
ビジュアルモードで範囲選択している場合は、選択範囲の文字をgrepします。
またコマンドモードから各種オプションを指定して実行する事も出来ます。

コマンド一覧

 ,e Grep  通常のgrep
 ,f FGrep  正規表現を使わないで検索
 ,v VGrep
Vimgrep
 vimgrepでgrep
 ,b BGrep  現在開いている全てのバッファのみを対象にgrep (無名バッファは検索できない)

 ,E Grepadd  通常のgrep
 既にQuickfixウィンドウに登録されている結果は削除しない。
 ,F FGrepadd  正規表現を使わないで検索
 既にQuickfixウィンドウに登録されている結果は削除しない。
 ,V VGrepadd
Vimgrepadd
 vimgrepでgrep
 既にQuickfixウィンドウに登録されている結果は削除しない。
 ,B BGrepadd  現在開いている全てのバッファのみを対象にgrep (無名バッファは検索できない)
 既にQuickfixウィンドウに登録されている結果は削除しない。

キーマップリーダーは以下のオプションで変更できます。
デフォルトでは g,e のように3ストロークですが、2ストロークコマンドにしたい場合は MyGrep_KeyB = '' のように空文字に設定して下さい。
"Grepコマンドのキーマップ
let MyGrep_Key = 'g'
"Grepコマンドの2ストローク目キーマップ
let MyGrep_KeyB = ','

QuickfixウィンドウのON/OFFは<C-w>, かToggleQFixWinを使用してください。
QuickfixウィンドウのON/OFF
Quickfixウィンドウ上の操作は「拡張Quickfixウィンドウの操作」にまとめてあります。

検索するファイルの種類を指定する際は、*.vim *.txt のように 複数の種類を指定可能です。
grep後、自動的にQuickfixウィンドウが開き、検索レジスタにはgrepした文字列が登録されます。
検索するファイルを指定する際、**/*.vimのように **/を付けて指定すると再帰的にgrepを行います。

gvimではメニューのツール(T)から実行する事も出来ます。


コマンドモードから実行する

コマンドモードからもGrepを実行できます。
:Grepは grepprgで指定されているコマンドが実行されます。
このため :grepの完全上位コマンドとして扱え、使用できるオプションも :grepと全く同じになります。
grepprg に外部grepを指定している場合、再帰検索には -r など外部grepのオプションを指定してください。
:Grep -r searchword *.vim
:Vimgrepは grepprg にかかわらずvimgrepと同等のコマンドになります。

また:Grep! のように ! を指定すると、開いているファイルと同じディレクトリを基準にgrepします。
したがって autochdir やプラグインでカレントディレクトリをファイルと同じディレクトリに設定している場合に違いはありません。


外部grep使用時のファイルエンコード

外部grepを使用する場合、検索対象ファイルの文字エンコードは 現在開いているファイルと同じと仮定して実行されます。
よって異なる文字エンコードのファイルは検索されません。
Vimgrepならファイルエンコードは自動判別されます。

拡張Quickfixウィンドウの操作

Grepコマンドや g,e 等で検索した後、自動的にQuickfixウィンドウが開きます。
コマンドラインから直接vimgrepを実行した場合は手動でQuickfixウィンドウを開いて下さい。
<C-w>, や ToggleQFixWinを使用すると前回のカーソル位置、ソート結果なども保存されるので、<C-w>, かToggleQFixWinを使用してください。
QuickfixウィンドウのON/OFFには一応copen,cclose等のQuickfixコマンドも一応使えます。


<C-w>,  Quickfixウィンドウのオープン/クローズ

<C-w>.  Quickfixウィンドウへ移動
 多数のウィンドウを開いていても、一度でQuickfixウィンドウに移動出来ます。
 5<C-w>. のようにカウント指定すると指定サイズの高さに変更されます。
 Quickfixウィンドウ上ではウィンドウ高さをデフォルトに戻します。
 q  Quickfixウィンドウのクローズ

<CR>
 ファイルを開く。
 3<CR>のように番号を指定すると対応する行のファイルを開く。

<S-CR>  <CR>とは逆の画面分割方法でファイルを開く

<C-CR>  ファイルを開いてから、指定行に移動しないで最後の編集場所へ移動

s  文字列を指定して絞り込み。
 <C-r>/で検索文字列が貼り付け可能。
 <C-u>、<C-w>、ヒストリも有効。
 画面に表示されている部分(各行1kバイト)のみが対象になる。

u  絞り込みのアンドゥ

<C-r>  絞り込みのリドゥ

U  絞り込みを全て元に戻す

J  ジャンプ後にQuickfixウィンドウを閉じる/閉じないをトグル

i  プレビュー表示ON/OFF

I  ファイルタイプのハイライト表示ON/OFF。
 環境やファイルサイズによっては重くなるので、その場合はOFFにしてください。

S  更新時間順、名前順などのソート切替。
 絞り込みは初期状態になる。

<C-q>
 Modifiableモード ON/OFF。
 Quickfixウィンドウを書き換え可能にする。

A
<C-o>
 「Quickfixウィンドウの保存と読込
 現在のQuickfixウィンドウを保存する。
 3Aのようにカウント指定すると、ファイル名に指定カウントを付加して読み込む。
 ~/.qfgrep.txt → ~/.qfgrep3.txt

O
<C-i>
 「Quickfixウィンドウの保存と読込
 保存されているQuickfixウィンドウを読み込む。
 3Aのようにカウント指定すると、ファイル名に指定カウントを付加して保存する。
 ~/.qfgrep.txt → ~/.qfgrep3.txt

グローバルなQuickfixウィンドウの読込コマンド

Quickfixウィンドウの保存と読込」で保存したQuickfixウィンドウの内容を読み込む事が出来ます。
デフォルトのキーマップは g,k になります。

 ,k 「Quickfixウィンドウの保存と読込
  3g,k のようにカウント指定すると、ファイル名に指定カウントを付加して読み込む。
 ~/.qfgrep.txt → ~/.qfgrep3.txt



QuickfixウィンドウのON/OFF

 <C-w>,
 QuickfixウィンドウのON/OFF
 <C-w>.
 Quickfixウィンドウに移動する。
 多数のウィンドウを開いていても、一度でQuickfixウィンドウに移動出来ます。
 5<C-w>. のようにカウント指定すると指定サイズの高さに変更されます。
 Quickfixウィンドウ上で実行すると、高さがデフォルトに戻ります。
 q  Quickfixウィンドウを閉じる

<C-w>, や ToggleQFixWinを使用すると前回のカーソル位置、ソート結果なども保存されます。
QuickfixウィンドウのON/OFFには一応copen,cclose等のQuickfixコマンドが使えますが、できるだけ上記コマンドを使用して下さい。

オプションと設定

ToggleQFixWinでQuickfixウィンドウのON/OFFが出来ます。

 ToggleQFixWin
 QuickfixウィンドウをON/OFF
 OpenQFixWin  QuickfixウィンドウをON
 CloseQFixWin  QuickfixウィンドウをOFF
 MoveToQFixWin  Quickfixウィンドウへ移動
 ResizeQFixWIn  Quickfixウィンドウを元のサイズに戻す

.vimrc設定例
"QuickfixウィンドウをON/OFF
"この設定例ではgsが使用できなくなります。好みに応じて変更して下さい。
nnoremap
<silent> gs :ToggleQFixWin<CR>

ファイルを画面分割して開くことが出来ます。
<CR>と<S-CR>では逆の分割法で開きます。
"ファイルを画面分割して開く/開かない。
let QFix_FileOpenMode = 0
またファイルを分割で開いたときの最小ウィンドウ高さを指定可能です。
0なら全てのウィンドウサイズを同じ高さにします(デフォルト)
ウィンドウを水平分割するタイプのプラグインを使用するなら、高さを指定すると相性が改善される事があります。
"ファイルを分割して開いたときの最小ウィンドウ高さ指定
let QFix_WindowHeightMin = 10


絞り込み検索

Quickfixウィンドウでは絞り込みが出来ます。

sを押すと入力モードになるので、何か適当な文字列(たとえばファイル名)を入れてみてください。
入力した文字列で絞り込まれます。
元に戻したい場合はuでアンドゥ出来ます。
最初の状態に戻すのはUです。

注意

Quickfixウィンドウに絞り込みを行っていて画面に表示されている時にvimを終了しようとすると、
「変更を"無題"に保存しますか?」
というメッセージが出ることがあります。
これは絞り込み中のQuickfixバッファは編集中と見なされるためです。
'n'を選ぶか、Quickfixウィンドウを閉じてから終了するか、'U'コマンドで絞り込みを初期状態に戻してから終了するかのいずれかを選択します。

また基本的に画面がおかしいと思ったら、アンドゥ(特にU)してください。
例えば絞り込み中に拡張Quickfixに対応していないgrep等(helpgrep等)が実行されると、画面は絞り込み中の物が表示され続けることがあります。


ソートの種類



Quickfixウィンドウで S を押すとソートの種類を聞いてきます。
m,n,t のいずれかを入力します。
Sort type? (r:reverse)+(m:mtime, n:name, t:text) : 

ソートの種類
 m
 ファイルの更新時間 (mtime)
 n  ファイル名 (name)
 t
 表示されているテキスト内容 (text)

逆順にしたい場合は rt のように、最初に r を付けて下さい。


Modifiableモード

<C-q>でQuickfixウィンドウを書き換え可能にして、通常のバッファと同じ編集作業が出来ます。
基本的に行単位の編集でないと意味がありませんが、自分で作成したソート、編集などが使用できます。
例えば、絞り込み検索とは逆に「指定した単語を含まない行を抽出したい」場合は、<C-q>を押してから次の様にします。
:g/fuga/d
この例では fuga を含む行が削除されます。

ファイル名部分を編集するとジャンプできなくなるので注意して下さい。
おかしくなったら U や u で全て元に戻せます。


Quickfixウィンドウの保存と読込

Quickfixウィンドウの内容を保存したり、読み込んだりする事が出来ます。
保存、読込の際にカウント指定すると、ファイル名に指定カウントを付加したファイル名で処理します。
現在の結果を保存して一時的に別の検索をしたい場合や、複数の結果を保存したい場合に使用してください。

Quickfix上のコマンド
A
<C-o>
 現在のQuickfixウィンドウを保存する。
 3Aのようにカウント指定すると、ファイル名に指定カウントを付加して保存する。
 ~/.qfgrep.txt → ~/.qfgrep3.txt
O
<C-i>
 保存されているQuickfixウィンドウを読み込む。
 3Oのようにカウント指定すると、ファイル名に指定カウントを付加して読み込む。
 ~/.qfgrep.txt → ~/.qfgrep3.txt

何かgrepしてからQuickfixウィンドウ上で A を押すと現在のgrep結果が保存されます。
その後に別のgrepを行ってから O を押すと、保存した検索結果が表示されます。

グローバルな「Quickfixウィンドウ読み込み」のキーマップは g,k になります。

 ,k 「Quickfixウィンドウの保存と読込
  3g,k のようにカウント指定すると、ファイル名に指定カウントを付加して読み込む。
 ~/.qfgrep.txt → ~/.qfgrep3.txt


保存するファイルはMyGrep_Resultfileで指定します。
"現在登録されているGrep結果を保存するファイル
let MyGrep_Resultfile = '~/.qfgrep.txt'
保存、読込の際にカウント指定すると、ファイル名に指定カウントを付加したファイル名で処理します。
現在の結果を保存して一時的に別の検索をしたい場合や、複数の結果を保存したい場合に使用してください。

たとえば3Oのようにカウントに 3 を指定すると
 ~/.qfgrep.txt → ~/.qfgrep3.txt
になります。

コマンドで読込、書込も出来ます。
ファイル名を指定しないと、MyGrep_Resultfileが使用されます。
必要なら適当なキーにマップするなどして使用してください。

 保存されているQuickfixウィンドウを読み込む  :MyGrepWriteResult ファイル名
 現在のQuickfixウィンドウを保存する  :MyGrepReadResult ファイル名

以下のように設定すると<F2>を押すと 2<C-o>で保存した検索結果を表示する事が出来ます。
"現在登録されているGrep結果を保存するファイル
nnoremap <silent> <F2> :MyGrepReadResult ~/.qfixgrep2.txt<CR>




次のページ「QFixGrep - オプション」へ 

QFixGrep - vim用grepヘルパー | QFixGrep - インストール | QFixGrep - 使い方と操作一覧 | QFixGrep - オプション | Shift_JIS(cp932)の「ダメ文字」トラブルシューティング