将当前文件的所有内容追加到名为 filename 的文件中

将当前文件的所有内容追加到名为 filename 的文件中

我知道我可以通过简单地写入文件:w <file>。我想知道如何通过附加而不是覆盖它来写入文件。

示例用例:我想从日志文件中取出一些样本到另一个文件中。为了实现这一目标,今天我可以这样做:

  1. 打开日志文件
  2. 选择一些行Shift+v
  3. 写入文件::w /tmp/samples
  4. 选择更多行Shift+v
  5. 附加/tmp/samples:w !cat - >> /foo/samples

不幸的是,第 5 步很长、丑陋且容易出错(缺少 a>会导致数据丢失)。我希望 Vim 能有更好的东西。

答案1

: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:'<,'>将自动添加到前面)。如果你错过了 a >,Vim 会抱怨:

E494: Use w or w>>

答案2

定义一个函数:

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

调用一个函数:

call App('/foo/samples')

答案3

将当前文件的所有内容追加到名为 filename 的文件中

:w >> filename

将当前文件第 1 行到第 13 行的内容追加到名为 filename 的文件中

:1,13w >> filename

相关内容