2011-07-25 7 views
4

関数内で検索し、そのスコープ内の別の関数を呼び出すすべての行を別のファイルにコピーしたいと考えています。私は視覚的な選択で検索の範囲を制限することができ、検索は簡単ですが、すべての検索結果を任意のバッファにコピーする便利な方法は得られません(分析のために別のファイルに貼り付けることができます)。 .. 誰かが解決策を指し示すことができますか(私はそれがかなり簡単だろうと確信していますが、何らかの理由でそれが私には明らかではありません!!)?VIM:部分文字列を持つすべての行を別のファイル/バッファにコピーする方法は?

答えて

14

あなたが使用することができます:レジスタがあなたのためにいくつかの助けになることができ

:let @a=''    " clear register a. A faster alternative would be “qaq” in normal mode (thanks ZyX) 
:g/pattern/y A   " yank all lines with pattern into register a, but in append mode (hence a capital letter) 
:buffer other_file.txt 
"ap 

たぶんthis answerについて。

代替あなたは、他のバッファに追加したい場合:

:redir >> other_file.txt 
:g/pattern/#  "alternative: :g/pattern/print or :g/pattern/number. 
:redir END 

参考文献::help :g:help :#:help :redir

+0

偉大な答え - しかし、私は、例えば、それはもう少し理解したい: :g/pattern/y A =>なぜ追加モード(以前の値をレジスタaに保存するのでしょうか?)、第2に、デフォルトレジスタ 'a'ですか? – TCSGrad

+3

デフォルトレジスタは悲しいことに大文字ではありませんので、この方法では追加することはできません。追加する理由は、最後のものだけでなくすべての一致する行を得ることです。 –

+2

通常モードになっていれば、レジスタ 'a'をクリアすることができます。これは、行を移動して別の行に移動し、その行を取り消すことができます。 – ZyX

関連する問題