2012-06-11 12 views
10

vimバッファにvilsのようなものを使用したいと思います。Vim - フィルタ結果を簡単に編集する

例:

a 
a 

、それは通常のバッファであるかのように、出力を編集: "A"(:g/a/

出力用

a 
b 
a 
b 

検索。 完了したら、変更を元のバッファに1行ずつマップする必要があります。

どうすればよいですか?

PS:おそらく:%s/../../などを使用できますが、それほど快適ではありません。 (CTRLに完了 + Fバッファがうまくいく場合でも。)

+2

私はこれを設定ファイルのコメントを隠すために使いたいと思います。 –

+0

あなたの最善の選択肢は、検索文字列がない行を隠し続けることです。 –

答えて

4

使用Qfreplace http://github.com/thinca/vim-qfreplace

  1. adクイックフィックスにdを入れる例:grep foo * /
  2. タイプ:Qfreplace on quickfix
  3. あなたが望むように変更します。
  4. :あなたはemacsの中occure/narrow-to-regionような音の話をしている
+0

これはまさに私が欲しかったものです。どうもありがとうございました! – Ivaldi

-1

g/../は 'A.TXT」にすべて、例えば変更する

:g/^a/ s/a/a.txt/ 

ようなコマンドと組み合わせることができます' ':h:g'を参照

+1

私は彼が望んでいるとは思わない。私は彼がいくつかの行を隠し、他の行を編集したいときや、保存するときにファイル全体を保存したいと思うと思います。 – ThiefMaster

1

一致する行が単一の範囲の連続する行にまたがっている限り、NrrwRgn pluginが役に立ちます。

:$mark a 

ので:

0

私は通常、あなたがしたい場合は、「かつての」エンド・オブ・文書にマークを設定することができ、文書

:g/a/t$ 

の最後に行をコピー通常どおり、今あなたが実際にどこか別の場所に保存するなど、ドキュメントの'a,$一部を編集することができます。

:'a,$d | new | put! 

次は同様に動作します:あなたはヤンクすることができ、レジスタaへの追加:もちろん

:g/a/yank A 

、あなたが開始する前に登録解除するたいことがあります。

:let @a="" 
2

ワット機能。 vimので

、次のコマンドを入力することができます。そして、

:vimgrep pattern % 

クイックフィックスリストを開くために:cwを入力します。

マウスクリックまたは:cn/:cpを使用して移動して変更を加えることができます。

+0

ええと、これは私にとってはうまくいきません...リストが開きますが、変更しようとすると 'E21:変更はできません。 '変更可能なものはオフです。それを上書きするために、変更は元のファイルに反映されません。 – weronika

関連する問題