2012-01-14 8 views
2

私はこれが私にそう配管出力

2 h "index.html"     line 98 
3 h "Category/Category.Bg_S.js" line 1 
4 h "Category/Category.Box0_S.js" line 1 
5 + "Category/Category.Box10_S.js" line 1 
6  "Category/Category.Box11_S.js" line 1 
7 + "Category/Category.Box12_S.js" line 1 

のようなリストが表示されます。しかし、あまりにも多くのバッファが存在する場合

:ls 

を入力Vimの中ですべての変更されたファイルを検索するにこれは面倒なことがあります。パイプへ

:ls !grep + 

Vimのlsシェルのgrep機能の内容:私は何をやって考えていたことのようなものになるだろう。しかし、それは動作しません。したがって、私は2つの質問があります:

  1. すべての変更されたファイルのリストはどのようにして見つけられますか?
  2. 1)の方が簡単な解決法がある場合は、どのような理由でvimコマンドの出力をシェルコマンドに渡すのですか?
+1

変更したファイルで何をしたいですか? – romainl

+0

@romainl私は盲目的に ':xa'を発行するのではなく、終了する前にどのファイルが修正されているのか見たいです – puk

答えて

2

最も簡単な方法は、修正のバッファのためにそれをフィルタリングし、vimの出力を変数に「リダイレクト」することはおそらくです:

function! GetModifiedBuffers() 
    redir => bufoutput 
    buffers " same as ls 
    redir END 
    return join(filter(split(bufoutput,'\n'),"v:val =~ '\\%8c+'"),'\n') 
endfunction 

次に変更バッファのリストを表示するには:echo GetModifiedBuffers()ような何かを行います。