Vim 如何在vi中连接两行?

Vim 如何在vi中连接两行?,vim,vi,Vim,Vi,我在文本文件中有两行,如下所示: 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 suf _ID\u T\

我在文本文件中有两行,如下所示:

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
suf
_ID\u T\u O.DAT
我想在vi中添加两行,如下所示:

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
S\u F\u ID\u T\u O.DAT
第二行被删除,第二行的内容被追加到第一行


如何在vi中使用命令模式执行此操作?

Shift+J将删除当前行中的换行字符,因此通过在行中的任何位置按“J”,您可以按自己的方式组合当前行和下一行。

J

按第一行的Shift+4($),然后按Shift+J(“J”)

如果需要帮助,请进入vi,然后按F1。

只需将“
\n
”替换为“”

在vi/Vim中,对于文档中的每一行:

%s/>\n_/>_/g
如果要确认每次更换:

%s/>\n_/>_/gc
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
suf
_ID\u T\u O.DAT
结果:

S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT
S\u F\u ID\u T\u O.DAT
使用“J”命令,您将拥有:

S<Switch_ID>_F<File type> _ID<ID number>_T<date+time>_O<Original File name>.DAT
S\F\u ID\u T\u O.DAT
请注意,在vi、
J
(即Shift+J)或
:join
在大多数情况下都应该做您想做的事情请注意,它们会调整空格。特别是,在许多情况下,两条连接线之间会有一个空格,如果第二条线缩进,则缩进将在连接之前删除


在Vim中,您还可以使用
gJ
(G,然后Shift+J)或
:join。这些将在不进行任何空格调整的情况下连接行


在Vim中,请参阅帮助J
,了解更多信息。

在Vim中,您也可以使用
gJ


ََ

另一种连接两行而不将光标放在该行的方法是:

:6,6s#\n##
这里6是另一行将连接到的行号。要显示行号,请使用
:set nu

如果光标位于下一行应连接的位置,则:

:s#\n##

在这两种情况下,我们都不需要
g
:s#\n##g
,因为在一行上只有一个
\n
存在。

如果您想加入所选行(您处于视觉模式),那么只需按
gJ
以无空格的方式加入行


这在上有更详细的描述。

$移动到行的末尾,但jj不一定非得在行的末尾才能连接行。实际上,按$是不必要的。@laurence。按$可确保光标正好放在新行的旁边,这是必须的。@Vijay:不必这样做(至少在Vim 8.1.2269中不是这样)。无论哪种方式,您都可以获得额外的空间。(vi/Vim的配置起作用了吗?)。您试过什么?'J'在连接行时提供了额外的空间。@MaximKim:And。请注意,
:hJ
将告诉您如何禁用该功能。如果您不希望vim在连接行时添加空间,请使用
gJ
“从当前行中删除行更改字符”这是一种非常笨拙的方式来描述J的行为,而且也不是很正确这一行到下一行。在这个过程中,它删除了换行符,但也以其他方式处理了空格。我只想指出,
g/pattern/join
在VIM中有效,而
g/pattern/J
不起作用。这可能会帮助一些未来的人。我喜欢你用pattern连接,但是,它用空格连接两行。无论如何,连接两行s带有没有空格的图案?g/pattern/join!似乎可以这样做。使用
Shift+V
选择要连接的所有行(最后一行除外)更容易,然后使用
:“适合使用首选分隔符进行选定的多行连接。在正常模式或视觉模式下发现一个输入错误?使用
gJ
时需要注意一点。”>J
是将光标更改到连接点,但是
:join!
:join
不要。不相关的问题:为什么我们需要连接两行?@RishabhBhatnagar,因为我们需要将它们连接起来。因为J是一个非常容易访问的键,所以连接必须是最常用的操作之一。我只是想知道cas的用法在需要连接的地方使用。