我想将文件中的所有行连接成一行.这样做最简单的方法是什么?我尝试使用替换的运气很差(\r\n
或者在Windows \n
的情况下似乎没有正确选择s/\r\n//
).J
在范围表达式中使用似乎也不起作用(可能是因为在执行第一个命令后范围不再处于'sync').
我试过,:1,$norm! J
但这只做了一半的文件 - 这是有道理的,因为它只加入每一行.
其他方式:
ggVGJ
" ggVG
"可视地选择所有行,并" J
"加入它们.
啊,我找到了答案.
:1,$join
奇迹般有效.
编辑:正如评论中指出:
:%join -or- :%j
...删除范围.
您可以从正常模式开始执行3次击键:
:%j
:
进入命令模式
%
指的是文件中的所有行
j
执行join命令
现在似乎这在线之间增加了一个空格.我不确定你是否想要这个.
你可以减少三次击键:
:1,$j
是不是盛大?
神秘的方式:
qqqqqJ@qq@q
(前三个q
清除q
寄存器,将qqJ@qq
宏记录到q
执行Join 的寄存器,然后调用q
,最后一个@q
运行它.
我很惊讶没有人甚至提到过另一种方式:
:%s/\n/ /
我同样感到惊讶的是,没有人指出该范围1,$
有写的速记%
.
(这与加入线条的方式不同,但取决于实际上可能更合适的情况.)