13

ag.vimプラグインを使用して、disabled複数のファイルから文字列を検索するとします。クイックフィックスウィンドウにいくつかの結果が返されます。

1 first_file.rb|1 col 1| disabled something something
2 second_file.rb|1 col 2| disabled another something

クイックフィックスの結果を入力として選択し、それらをgrepして、新しいクイックフィックスウィンドウで結果を開くことは可能ですか?つまり、と入力する:quickfix_grep first_fileと、新しいクイックフィックスが1つのエントリだけでポップアップ表示されます。

1 first_file.rb|1 col 1| disabled something something
4

4 に答える 4

20

アップデート

この要件のためにvimプラグインが作成されています:https ://github.com/sk1418/QFGrep


元の回答:

あなたの目標についての私の理解は次のとおりです。

grepの結果は、クイックフィックスでどういうわけか巨大であるため、ビューを狭めたいと考えています。正規表現を使用してコマンドを入力することにより、grepの結果をフィルタリングします。フィルタリングされた結果はQuickFixウィンドウにも表示され、ファイルを開いたりジャンプしたりできるようになります。

上記が必要な場合は、以下を確認してください。

この関数とコマンドラインをソースします。

function! GrepQuickFix(pat)
  let all = getqflist()
  for d in all
    if bufname(d['bufnr']) !~ a:pat && d['text'] !~ a:pat
        call remove(all, index(all,d))
    endif
  endfor
  call setqflist(all)
endfunction
command! -nargs=* GrepQF call GrepQuickFix(<q-args>)

次に、grep / ack /クイックフィックスに表示されるものの後に、次のように入力できます。

:GrepQF <regex>

クイックフィックスでフィルタリングを実行します。

ここにGIFアニメーションを追加します。Ackの代わりに使用しgrepていますが、違いはありません。指定された正規表現は、ファイル名とクイックフィックスに表示されるテキストと一致します。それを示すために、フィルタリングを2回行いました。

ここに画像の説明を入力してください

それが役に立てば幸い。

于 2013-03-14T12:20:12.017 に答える
7

新しい公式vimプラグインcfilter

21.8.2018(パッチ:8.1.0311)以降、プラグインcfilterはvimとともに配布され$VIMRUNTIMEます。に記載されてい:h cfilter-pluginます。

必要に応じてプラグインcfilterをロードするか、vimrcに常にロードします

:packadd cfilter

クイックフィックスリストを

:Cfilter DPUST
于 2018-08-22T07:55:32.537 に答える
5

この問題に対する私の解決策は、常にクイックフィックスバッファをデフォルトで変更可能にすることでした:

:autocmd BufReadPost quickfix set modifiable

(上記のコマンドは.vimrcファイルに入れられます。)

:globalこれを行うと、無関係なエントリを手動で削除したり、 and:vglobalコマンド(質問で必要な機能を無料で提供する)を使用してフィルタリングしたりするなど、grepping結果を適切に編集するためのあらゆる可能性が開かれます。関連するエントリのグループ化と並べ替え。空白行またはコメントを自由形式で追加する。等

于 2013-03-14T21:20:23.683 に答える
4

@Kentの回答の短くてすっきりとしたバージョンは次のとおりです。

function! GrepQuickFix(pat)
  call setqflist(filter(getqflist(), "bufname(v:val['bufnr']) !~# a:pat"))
endfunction
command! -nargs=* GrepQF call GrepQuickFix(<q-args>)

これは同じコードですが、きちんと短く、別のプラグインに値するとは思いません。

于 2013-12-16T07:33:35.593 に答える