如何在 vi 中连接两行?

我在一个文本文件中有两行如下:

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 中如何使用命令模式执行此操作?

143349 次浏览

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

这个应该可以:

J

在第一行按 换挡 + 4(“ $”) ,然后按 换挡 + J(“ J”)。

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

只要将“ \n”替换为“”即可。

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

%s/>\n_/>_/g

如果你想确认每一个替换:

%s/>\n_/>_/gc

Vi 还是 Vim?

无论如何,下面的命令在“不兼容”模式下适用于 Vim。

: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之间的空格。

在 vi 中,在大多数情况下,J(即 换挡 + J)或 :join应该做您想做的事情。特别是 请注意,它们会调整空格。,在许多情况下,在两个连接的行之间会有一个空格,如果第二行是缩进的,那么在连接之前缩进将被删除。

在 Vim 中,你也可以使用 gJ(G,然后是 换挡 + J)或者 :join!。这些连接线不需要做任何空格调整。

在 Vim 中,有关更多信息,请参见 :help J

在 Vim 中也可以使用 gJ

ََ

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

:6,6s#\n##

这里的6是另一行要连接的行号。要显示行号,请使用 :set nu

如果我们在光标上下一行应该连接的地方,那么:

:s#\n##

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

如果您想加入选定的行(您是在视觉模式) ,然后只需按 gJ加入您的行没有任何空格。

这在 Vi/Vim 堆栈交换站点中有更详细的描述。