我想将文件中的所有行加入一行。这样做最简单的方法是什么?我尝试使用替换时运气不佳(\r\n
或\n
似乎在Windows上s/\r\n//
的情况下无法正常使用。在范围表达式中使用J
似乎也不起作用(可能是因为在执行第一个命令后范围不再处于'sync')。
我尝试了:1,$norm! J
但这只占了文件的一半 - 这是有道理的,因为它只加入了每一行。
答案 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,$
有一个写成%
的简写。
(这与加入这些行不同,但取决于实际上可能更合适的情况。)