一尘不染

如何在 Vim 中用换行符替换字符

javascript

我正在尝试用,新行替换当前文件中的每个:

:%s/,/\n/g 

但它会插入看起来像 a^@而不是实际的换行符。该文件未处于 DOS 模式或任何状态。

我该怎么办?


阅读 273

收藏
2022-02-09

共1个答案

一尘不染

使用\r而不是`\n.

替换\n为在文本中插入一个空字符。要获得换行符,请使用\r. 但是,在搜索换行符时,您仍然会使用\n。这种不对称是由于做些稍微不同\n\r 事情

\n匹配行尾(换行符),而\r匹配回车符。另一方面,在替换中\n插入一个空字符,而\r插入一个换行符(更准确地说,它被视为输入CR)。这是一个使用 Vim 命令行功能的小型非交互式示例来说明这一点(换句话说,您可以将以下内容复制并粘贴到终端中以运行它)。xxd显示结果文件的十六进制转储。

echo bar > test
(echo 'Before:'; xxd test) > output.txt
vim test '+s/b/\n/' '+s/a/\r/' +wq
(echo 'After:'; xxd test) >> output.txt
more output.txt
Before:
0000000: 6261 720a                                bar.
After:
0000000: 000a 720a                                ..r.

换句话说,\n在文本中插入了字节 0x00;\r已插入字节 0x0a。

2022-02-09