作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试用新行替换当前文件中的每个 ,
:
:%s/,/\n/g
但它插入了看起来像 ^@
的内容,而不是实际的换行符。该文件不处于 DOS 模式或任何模式。
我应该做什么?
如果您像我一样好奇,请检查问题 Why is \r a newline for Vim? 也是如此。
最佳答案
\r
而不是\n
。用 \n
替换会在文本中插入一个空字符。要获取换行符,请使用 \r
。但是,当搜索换行符时,您仍然会使用\n
。这种不对称是由于 \n
和 \r
do slightly different things :
\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。
关于vim - 如何在 Vim 中用换行符替换字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71323/
我是一名优秀的程序员,十分优秀!