如何在vi中加入两条线?


169

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

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中使用命令模式来做到这一点?

Answers:


310

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


9
大写字母J连接线,小写字母移动光标

4
那是大写字母J,而不是小写字母J;因此,Shift-J。
乔纳森·莱夫勒

28
“从当前行中删除行更改字符”是描述J所做的相当尴尬的方式,而且也不是正确的。J将这一行“连接”到下一个。在此过程中,它删除了换行符,但还以其他方式操纵了空格。
劳伦斯·贡萨尔维斯(Lawrence Gonsalves),2009年

5
哈哈。GJin vim将移动到最后一行,然后尝试将其连接到下一行,join命令唯一没有意义的地方。是的,我觉得这很有趣:-)
Alok Singhal

2
我仍然不知道我需要继续使用StackOverflow来使用此编辑器连接两行!
Manitra Andriamitondra

59

Vi还是Vim?

无论如何,以下命令在“不兼容”模式下适用于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
只是要指出g/pattern/join在VIM 中有效,而在VIM g/pattern/J中无效。可能会帮助一些未来的人。
jisaacstone 2013年

我喜欢您的模式连接,但是,它用空格将两行连接起来。无论如何用没有空格的图案连接两行?
David.Chu.ca,2015年

g /模式/加入!似乎做到了。
fortboise 2015年

1
可以更复杂吗?:-)
约翰内斯·欧弗曼


17

在vi中,J(即Shift+ J)或:join应该做大部分事情。请注意,它们会调整空白。特别是,在许多情况下,最后会在两条连接的线之间留一个空格,如果缩进第二行,则缩进将在连接之前被删除。

在Vim中,您也可以使用gJG,然后Shift+ J)或:join!。这些将连接行,而无需进行任何空格调整。

在Vim中,请参阅参考资料:help J


使用时的一个警告 gJ,并J为这两个昌光标到结合点,但:join!:join不。
SergioAraujo

4

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

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

%s/>\n_/>_/g

如果要确认每次更换:

%s/>\n_/>_/gc




1

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

:6,6s#\n##

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

如果我们在光标处应该连接下一行的位置,则:

:s#\n##

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


Shift+V选择最后一行除外的所有要连接的行,然后:'<,'>s/\n/, /在此示例中连接行,同时在每个行的末尾加上逗号和空格,这样比较容易。请注意,当选定某项并且我们:以普通模式键入时,'<,'>该命令将自动出现在命令行中。
Evgeni Sergeev

适用于带有首选定界符的选定多行联接。在普通模式或可视模式下发现一个错字?
vusan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.