Text-Processing
在 vi/vim 中,如何附加到文件而不是覆蓋它?
我知道我可以通過簡單地寫入文件
:w <file>
。我想知道如何通過附加而不是覆蓋它來寫入文件。範例案例:我想將一些樣本從日誌文件中提取到另一個文件中。為了實現這一目標,我可以做到:
- 打開日誌文件
- 選擇一些行
Shift+v
- 寫入文件:
:w /tmp/samples
- 選擇更多的行
Shift+v
- 附加
/tmp/samples
到:w !cat - >> /foo/samples
不幸的是,第 5 步很長、很難看且容易出錯(缺少 a
>
會使您失去數據)。我希望 Vim 在這裡有更好的東西。
來自
: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>>
定義一個函式:
fun! App(filename) exec "w !cat - >> " . shellescape(a:filename) endfunc
呼叫一個函式:
call App('/foo/samples')