vi / vimでは、ファイルを上書きするのではなく、ファイルに追加するにはどうすればよいですか?


10

簡単にファイルに書き込むことができます:w <file>。ファイルを上書きする代わりに、ファイルに追加して書き込む方法を教えてください。

使用例:ログファイルからいくつかのサンプルを別のファイルに取り込みたい。今日それを達成するために私はできる:

  1. ログファイルを開く
  2. いくつかの行を選択してください Shift+v
  3. ファイルに書き込む: :w /tmp/samples
  4. いくつかの行を選択してください Shift+v
  5. 追加する/tmp/samples:w !cat - >> /foo/samples

残念ながら、手順5は長く、見苦しく、エラーが発生しやすくなります(a >がないと、データが失われます)。ここにVimがもっと良いものを持っているといいのですが


3
Vimの使用に興味がある場合は、姉妹サイトのViとVimをチェックアウトしてください。
muru 16

回答:


25

から:h :w

                                                :w_a :write_a E494
:[range]w[rite][!] [++opt] >>
                        Append the specified lines to the current file.

:[range]w[rite][!] [++opt] >> {file}
                        Append the specified lines to {file}.  '!' forces the
                        write even if file does not exist.

したがって、ビジュアルモードを使用してテキストを選択した場合は、そのままにします:w >> /foo/samples:'<,'>自動的に先頭に追加されます)。を逃した場合>、Vimは文句を言うでしょう:

E494: Use w or w>>

これは完璧です:)ドキュメントを読むようなものは何もありません。しかし、知りません:hでした。さらに使用する
Bruno Polaco

1
@BrunoPolaco :hはの省略形です:help。で始まる:help helphelp?:D
muru 16

0

関数を定義します。

fun! App(filename)
    exec "w !cat - >> " . shellescape(a:filename)
endfunc

関数を呼び出す:

call App('/foo/samples')
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.