无法用Vim中的新行替换空格

时间:2009-06-26 11:34:06

标签: vim

我知道thread

我跑

:%s/ /s/\n/g

我得到了

E488: Trailing characters

第二个例子

我跑

:%s/ /\n/g

我得到了

text^@text

我也使用以下设置运行相同的代码

set fileformat=unix

set fileformat=dos

如何用Vim中的新行代替?

5 个答案:

答案 0 :(得分:120)

:%s/ / Ctrl v 返回 /g

其中 Ctrl v 是Control-key加上键v和返回是返回键(主键盘上的键,而不是键盘上的回车键)。其他字符像往常一样输入。

如果输入正确,序列 Ctrl v 返回将显示为字符^M,通常为不同颜色,表示它们是特别。请注意,实际输入^M工作。

另请注意,在Vim for windows中,它是Control-q而不是Control-v(因为它是粘贴)。


Ctrl-v还允许通过键盘输入其他“特殊”键。它对于例如它也是有用的。标签或退格。

答案 1 :(得分:44)

尝试

%s/ /\r/g

答案 2 :(得分:8)

输入以下内容:

:s/ /

现在键入Ctrl-V或Ctrl-Q(取决于您的配置)并按Enter键。你现在应该:

:s/ /^M

完成它:

:s/ /^M/g

你很高兴。

答案 3 :(得分:2)

尝试

对于Unix:

:1,$s/\ /\n/g

对于Windows:

:1,$s/\ /\r/g

这包含空格的转义字符。

答案 4 :(得分:2)

专门用于回答您的尾随字符问题,这是您指定的正则表达式:

:%s/ /s/\n/g

你有太多/。发生的情况是您将{'替换为s,然后在替换后对此进行标记:\n/g

我认为你的意思是:

:%s/ \s/\n/g

请注意,您的/s已更改为\s。现在,替换将替换一个空格,后跟一个\n的任何类型的空格(空格或制表符)。我怀疑这是否解决了问题或用换行符替换空格,但它应该解释错误信息。