无法用Vim中的新行replace空格

我知道线程 。

我跑

:%s/ /s/\n/g 

我明白了

 E488: Trailing characters 

第二个例子

我跑

 :%s/ /\n/g 

我明白了

 text^@text 

我也运行相同的代码与下列设置separetaly

 set fileformat=unix 

 set fileformat=dos 

你如何在Vim中换一个新的行?

:%s/ / Ctrl + v 返回 /g

其中Ctrl v是Control-key加v和Return是返回键(主键盘上的那个,而不是数字键盘上的回车键)。 其他字符照常input。

如果input正确, Ctrl + Return的顺序将显示为^M ,通常用不同的颜色表示它们是特殊的。 请注意,实际input^M将不起作用。

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


Ctrl-v还允许通过键盘input其他“特殊”键。 这对于Tab或Backspace也是有用的。

尝试

 %s/ /\r/g 

input以下内容:

 :s/ / 

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

 :s/ /^M 

完成它:

 :s/ /^M/g 

你很好走。

试试

对于Unix:

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

对于Windows:

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

这包含空间的转义字符。

特别要回答你的问题与尾随字符,这是你指定的正则expression式:

 :%s/ /s/\n/g 

你太多了。 会发生什么是你用sreplace'',然后你在replace后标记: \n/g

我认为你的意思是:

 :%s/ \s/\n/g 

请注意,您的/s被更改为\s 。 现在replace会用\nreplace一个空格,后面跟任何一种空格(空格或制表符)。 我怀疑这是否解决了问题或用换行符replace空格,但应该解释错误消息。