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的用法在需要连接的地方使用。