如何在vi中加入两行?

Vij*_*jay 162 vi vim

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

S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT
Run Code Online (Sandbox Code Playgroud)

我想在vi中添加两行,如下所示:

S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT
Run Code Online (Sandbox Code Playgroud)

第二行被删除,第二行的内容被附加到第一行.

我怎么能在vi中使用命令模式呢?

GJ.*_*GJ. 298

Shift+ J从当前行中删除换行符,因此通过在行中的任何位置按"J",您可以按照所需的方式组合当前行和下一行.

  • "从当前行中删除行更改字符"是描述J所做的非常尴尬的方式,并且也不是非常正确.J"加入"这一行到下一行.在此过程中,它会删除换行符,但也会以其他方式处理空格. (27认同)
  • 大写J连接线,小写移动光标 (8认同)
  • 哈哈.`vim`中的`GJ`将移动到最后一行,然后尝试将它连接到下一行,这是唯一一个连接命令没有意义的地方.是的,我发现这很有趣:-) (5认同)
  • 那是大写字母J,而不是小写字母J; 因此Shift-J. (3认同)
  • 我仍然无法意识到我需要使用此编辑器继续使用StackOverflow连接两行! (2认同)

Max*_*Kim 59

Vi还是Vim?

无论如何,以下命令适用于'nocompatible'模式下的Vim.也就是说,我想,几乎是纯粹的vi.

:join!
Run Code Online (Sandbox Code Playgroud)

如果你想从正常的命令使用它

gJ
Run Code Online (Sandbox Code Playgroud)

使用'gJ',您可以按原样连接行 - 无需添加或删除空格:

S<Switch_ID>_F<File type>
_ID<ID number>_T<date+time>_O<Original File name>.DAT
Run Code Online (Sandbox Code Playgroud)

结果:

S<Switch_ID>_F<File type>_ID<ID number>_T<date+time>_O<Original File name>.DAT
Run Code Online (Sandbox Code Playgroud)

使用'J'命令,您将拥有:

S<Switch_ID>_F<File type> _ID<ID number>_T<date+time>_O<Original File name>.DAT
Run Code Online (Sandbox Code Playgroud)

注意type>和之间的空间_ID.

  • 只想指出`g/pattern/join`在VIM中起作用,而`g/pattern/J`则不起作用.可能会帮助一些未来的人. (2认同)

sam*_*amg 22

这应该这样做:

J

  • 'J'在连接线条时提供额外的空间. (6认同)
  • @MaximKim:[这就是为什么](http://en.wikipedia.org/wiki/Sentence_spacing).请注意`:h J`将告诉您如何禁用该功能. (2认同)
  • 如果不想让 vim 在加入行时添加空格,请使用 `gJ` (2认同)

Lau*_*ves 15

在vi,J(那是shift-j)或者:join应该做你想要的,大部分.请注意,他们调整空白.特别是,在许多情况下,您最终会在两条连接线之间留出空格,如果第二条线缩进,则在连接之前将删除缩进.

在vim中你也可以使用gJ(g,then shift-j)或:join!.这些将在不进行任何空白调整的情况下连接线.

在vim中,请参阅:help J更多信息.


Car*_* C. 5

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

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

%s/>\n_/>_/g
Run Code Online (Sandbox Code Playgroud)

如果要确认每次更换:

%s/>\n_/>_/gc
Run Code Online (Sandbox Code Playgroud)