在Vim中,将文件中的所有行连接成一行的最简单方法是什么?

时间:2008-12-24 15:51:57

标签: windows vim

我想将文件中的所有行加入一行。这样做最简单的方法是什么?我尝试使用替换时运气不佳(\r\n\n似乎在Windows上s/\r\n//的情况下无法正常使用。在范围表达式中使用J似乎也不起作用(可能是因为在执行第一个命令后范围不再处于'sync')。

我尝试了:1,$norm! J但这只占了文件的一半 - 这是有道理的,因为它只加入了每一行。

6 个答案:

答案 0 :(得分:129)

另一种方式:

ggVGJ

ggVG”可视地选择所有行,“J”加入它们。

答案 1 :(得分:61)

啊,我找到了答案。

:1,$join

像魅力一样。

编辑:正如评论中所指出的那样:

:%join   -or-    :%j

...删除范围。

答案 2 :(得分:30)

您可以从正常模式开始执行3次击键:

:%j
  • :进入命令模式
  • %指的是文件中的所有行
  • j执行加入命令

现在看来,这会在线条之间增加一个空格。我不确定你是否想要这个。

答案 3 :(得分:14)

你可以减少三次击键:

:1,$j

不是盛大的吗?

答案 4 :(得分:9)

神秘的方式:

qqqqqJ@qq@q

(前三个q清除q寄存器,qqJ@qq将一个宏记录到执行Join的q寄存器,然后调用{{1}最后q运行它。

答案 5 :(得分:8)

我很惊讶没有人甚至提到过另一种方式:

:%s/\n/ /

我同样感到惊讶的是,没有人指出范围1,$有一个写成%的简写。

(这与加入这些行不同,但取决于实际上可能更合适的情况。)