我在文本文件中有两行,如下所示:
S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT
我想将这两行添加到vi中,如下所示:
S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT
第二行被删除,第二行的内容被附加到第一行。
我怎么能在vi中使用命令模式呢?
答案 0 :(得分:285)
Shift + J 从当前行中删除换行符,因此通过在行中的任何位置按“J”,您可以组合当前行和下一行你想要的方式。
答案 1 :(得分:57)
Vi或Vim?
无论如何,以下命令适用于'nocompatible'模式下的Vim。也就是说,我想,几乎是纯粹的vi。
:join!
如果您想从正常命令使用
gJ
使用'gJ'按原样连接行 - 不添加或删除空格:
S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT
结果:
S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT
使用'J'命令,您将拥有:
S<Switch_ID>_F<File type> _ID<ID number>_T<date+time>_O<Original File name>.DAT
注意type>
和_ID
之间的空格。
答案 2 :(得分:21)
这应该这样做:
J
答案 3 :(得分:15)
在vi中,J
(那是shift-j)或:join
应该做你想要的,大部分。 请注意,它们会调整空格。特别是,在很多情况下,最终会在两条连接线之间留出空格,如果第二条线缩进,则在连接之前将删除缩进。 / p>
在vim中,您还可以使用gJ
(g,然后是shift-j)或:join!
。这些将在不进行任何空白调整的情况下连接线。
在vim中,请参阅:help J
了解详情。
答案 4 :(得分:4)
只需将“\n
”替换为“”。
在vi / Vim中,文档中的每一行:
%s/>\n_/>_/g
如果您想确认每次更换:
%s/>\n_/>_/gc
答案 5 :(得分:3)
如果你想加入选定的行(你处于可视模式),那么只需按gJ
加入你的行,没有任何空格。
the vi/Vim Stack Exchange site更详细地描述了这一点。
答案 6 :(得分:1)
在第一行按 Shift + 4 (“$”),然后按 Shift + j ( “J”)。
如果您需要帮助,请进入vi,然后按 F1 。
答案 7 :(得分:1)
在Vim中,您还可以使用gJ
。
答案 8 :(得分:1)
在不将光标放到该行的情况下连接两条线的另一种方法是:
:6,6s#\n##
这里6是另一条线将加入的行号。要显示行号,请使用:set nu
。
如果我们在光标上应该连接下一行,那么:
:s#\n##
在这两种情况下,我们都不需要g
:s#\n##g
,因为在一行中只有一个\n
存在。