我知道我可以通过简单地写入文件:w <file>
。我想知道如何通过附加而不是覆盖它来写入文件。
示例用例:我想从日志文件中取出一些样本到另一个文件中。为了实现这一目标,今天我可以这样做:
- 打开日志文件
- 选择一些行
Shift+v
- 写入文件:
:w /tmp/samples
- 选择更多行
Shift+v
- 附加
/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