4

Javascript ファイルを受け取り、いくつかのスタイルの問題を自動的に修正する外部スクリプトがあります。書き込みの直前に現在のバッファに適用したいと考えています ( BufWritePre,FileWritePre)。

だから私の考えは次のとおりです。

  • w /tmp/foo現在のバッファの内容を一時ファイルに書き込みます
  • silent !fixStyle /tmp/fooそのファイルに対してスクリプトを実行します。
  • 現在のバッファの内容を次の内容で置き換えます/tmp/foo

問題は、3 番目のステップを実行する方法がわからないということです。

4

2 に答える 2

5

1 つの方法は、現在の内容を削除し (1,$dつまり、行 1 と最終行の間を削除する)、ターゲット ファイルの行 0 から (空白行がないように行 1 の前に) 読み込むことです。

:1,$d|0r ~/.hck/input

もう 1 つの方法は、フィルター (この場合は cat) を使用して、すべてのコンテンツ ( %) をフィルターの出力に置き換えることです。

:%!cat /tmp/foo
于 2013-05-21T00:40:12.940 に答える
0

を使用できますset autoread。ディスク上でファイルが変更されたことを検出し、ファイルから現在のバッファを再読み込みします。したがって、ファイルを保存してスクリプトを実行すると、vim は変更内容でバッファーをリロードします。

Autoread のヘルプを以下にコピーします

                 *'autoread'* *'ar'* *'noautoread'* *'noar'*
'autoread' 'ar'     boolean (default off)
            global or local to buffer |global-local|
            {not in Vi}
    When a file has been detected to have been changed outside of Vim and
    it has not been changed inside of Vim, automatically read it again.
    When the file has been deleted this is not done.  |timestamp|
    If this option has a local value, use this command to switch back to
    using the global value: >
        :set autoread<
于 2013-05-21T00:48:52.160 に答える