0

Vimで変更されたバッファの内容にアクセスするにはどうすればよいですか?

たとえば、コンテンツを次のような一時ファイルに連結する場合は、次のようになります。

:! cat % > /tmp/modified.txt

しかし、それは私にファイルの最後に保存された内容を与えます(そうですか?)。この相互作用は、最初にバッファーを保存せずに分析を可能にすることを目的としているため、以前にファイルを保存することは避けたいと思います。

VimのPython拡張機能を使用すると、次のようなことができるようです。

def buffer_contents(buffer=vim.current.buffer):
    contents = buffer[:]

VimLしかし、同じ機能のリファレンスが見つかりません。

編集:私は次のようなことができるようです:

:let buffer_contents = join(getline(1, '$'), '$')

この時点で、組み込みのアプローチがあるかどうか疑問に思います。

4

2 に答える 2

2

現在の内容を一時ファイルに追加する場合は、使用できます

:w! >> /tmp/modified.txt

:w! > /tmp/modified.txt

そのファイルを上書きするため(猫の例のように)。いくつかのスクリプトの標準入力に渡すには

:w !some-script

. あなたの何が悪いのgetline(1, '$')だろうか?

于 2012-11-18T18:43:17.743 に答える
1

getline(1, $)バッファ内のすべての(変更された)行を取得するために使用できますが、目標がそれらをファイルに書き込むことである場合、 :w! > filenameZyXの答えは依然として道です。writefile()Vimscript には関数がありますが、エンコーディング、行末などをすべて自分で処理する必要があり、ビルトイン:writeがそれを行うことができる場合、それは単に面倒です。

于 2012-11-18T19:36:27.017 に答える