在Vim中,如何在两行之间创建一个新行,前面一个空行,后面另一个空行?

在Vim中,如何在两行之间创建一个新行,前面一个空行,后面另一个空行?

例如,我有以下几行:

one line
another line
one more line
other line

但是,我想在两者之间添加一个新行,但前面一行为空,后面另一行为空。

one line
another line

MY NEWLY inserted line;

one more line
other line

正如您所看到的,前面有一个空行MY NEWLY inserted line;,后面有一个空行。

我怎样才能以简单的方式实现?

通常,我使用o, ESC, o, ESC, O。但我认为,这不是最好的办法。如果您知道请帮忙。谢谢。

答案1

  • 将光标置于“另一行”上
  • oEnter
  • 类型MY NEWLY inserted line
  • Esco

或者

  • 将光标置于“另一行”上
  • 2oEsc
  • O, 键入MY NEWLY inserted line

答案2

为了避免重复o+ Esc,有未受损的插件(我在一篇文章中提到过类似的问题我回答),它提供了正常模式下的映射,用于插入空白行,而无需进入插入模式(以及其他映射[]基于映射):

有逐行映射。[<Space>]<Space>在光标行之前和之后添加换行符。[e并将]e当前行与其上方或下方的行交换。

还:

. 命令适用于所有运算符映射,并且如果你安装了,它也可以适用于 > 逐行映射重复vim

因此,您可以添加多个空行(我将使用 3 个空行作为示例),避免插入模式,方法是:

3[<Space>

然后进入插入模式并输入!

起初我认为这个映射看起来有点尴尬和违反直觉,但现在我每天使用它很多次并且会想念它。有了插件中的其他映射[] 基础映射,一切就变得自然了。

例如,您可以将当前行与其上面的 [count] 行交换[e(或将上面的行交换为]e)。因此,要交换几行,您可以执行ddjp“删除,向下移动一行,然后越过下方”或简单地执行]e.

答案3

只需移至您想要在后面添加内容的行(another line在您的示例中),然后,

  1. 按 打开新行o
  2. 在输入新行之前再按Enter一次以插入空行,
  3. Enter两次可终止该行并在您刚刚输入的行后创建一个空行。

完成(按Escape返回正常模式)。

这对应于sed脚本

/^another line$/ a\
\
MY NEWLY inserted line;\
\

或到ed会议

1;/^another line$/ a

MY NEWLY inserted line;

.

相关内容