在Vim中,将文件中所有行join单行的最简单方法是什么?
我想将文件中的所有行join到一行中。 这样做最简单的方法是什么? 尝试使用replace( \r\n
或\n
在Windows上s/\r\n//
的情况下似乎没有正确拾取),我的运气不佳。 在范围expression式中使用J
似乎也不起作用(可能是因为在第一个命令执行后范围不再处于“同步”状态)。
我试过了:1,$norm! J
但是这只做了一半的文件 – 这是有道理的,因为它只是join每一行。
其他方式:
ggVGJ
“ ggVG
”直观地select所有行,“ J
”join它们。
啊,我find了答案。
:1,$join
奇迹般有效。
编辑 :正如在评论中指出:
:%join -or- :%j
…删除范围。
您可以从正常模式开始3个按键操作:
:%j
-
:
进入命令模式 -
%
是指文件中的所有行 -
j
执行连接命令
现在看来,这增加了线条之间的空间。 我不确定你是否想要这个。
您可以在三个按键中完成:
:1,$j
不是盛大的?
我很惊讶没有人甚至提到了另一种方式:
:%s/\n/ /
我同样感到惊讶的是,没有人指出范围1,$
有一个写成%
的速记。
(这与join界限并不是一回事,而是取决于实际上可能更合适的情况。)
神秘的方式:
qqqqqJ@qq@q
(前三个q
清除q
寄存器, qqJ@qq
logging一个执行Join的q
寄存器的macros,然后调用q
,最后一个@q
运行它。