如何在Vim中删除每行末尾的换行符?

10

我有一个很大的文件,想要使用Vim格式化它。为此,我想删除每行末尾的换行符。

例如,

I
want
this
to be
just one
line

应该变成什么?

I want this to be just one line
我考虑通过以下命令来实现:
:%g/^/norm!‹a keyword that deletes the \n›

但是我不知道哪个关键词可以自动化按下每一行上的 Del 键。

提前致谢!


https://dev59.com/iXVD5IYBdhLWcg3wJIEK - Kracekumar
3个回答

17

将缓冲区中所有行连接起来的最惯用方法是使用:join命令:

:%j!

如果您想让Vim在合并的行之间插入空格,请删除!符号。从问题的措辞中我推断您不想添加空格。

如果您更喜欢交互式操作,则可以执行相同的操作:

ggVGgJ

如果您想要用空格分隔连接的行,请使用J而不是gJ

另一个选择是使用:substitute命令:

:%s/\n//

1
每次我回答 Vim 相关问题时,我都会被教训一番 :) - Joe Holloway

3

ggVGJ

拆分如下:

  1. gg:移动到第一行;
  2. V:进入可视模式;
  3. G:移动到最后一行;
  4. J:将所选内容连接成单行。

太完美了!这个运行得非常好。不过,是否有像手动删除一样的关键字可以使用? - Hassek

2

为什么要使用Vim?你可以轻松地使用以下shell命令:

tr -d '\n' < file

1
是的,我知道,这只是出于好奇心:p - Hassek
1
当然,也可以直接从vim中调用tr,gg!Gtr -d'\n' - hlovdal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接