![在Vim中,如何在两行之间创建一个新行,前面一个空行,后面另一个空行?](https://linux22.com/image/187820/%E5%9C%A8Vim%E4%B8%AD%EF%BC%8C%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%A4%E8%A1%8C%E4%B9%8B%E9%97%B4%E5%88%9B%E5%BB%BA%E4%B8%80%E4%B8%AA%E6%96%B0%E8%A1%8C%EF%BC%8C%E5%89%8D%E9%9D%A2%E4%B8%80%E4%B8%AA%E7%A9%BA%E8%A1%8C%EF%BC%8C%E5%90%8E%E9%9D%A2%E5%8F%A6%E4%B8%80%E4%B8%AA%E7%A9%BA%E8%A1%8C%EF%BC%9F.png)
例如,我有以下几行:
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
- 将光标置于“另一行”上
- 按o,Enter
- 类型
MY NEWLY inserted line
- 按Esc,o
或者
- 将光标置于“另一行”上
- 按2,o,Esc
- 按O, 键入
MY NEWLY inserted line
答案2
为了避免重复o
+ Esc
,有未受损的插件(我在一篇文章中提到过类似的问题我回答),它提供了正常模式下的映射,用于插入空白行,而无需进入插入模式(以及其他映射[
和]
基于映射):
有逐行映射。
[<Space>
并]<Space>
在光标行之前和之后添加换行符。[e
并将]e
当前行与其上方或下方的行交换。
还:
. 命令适用于所有运算符映射,并且如果你安装了,它也可以适用于 > 逐行映射重复vim。
因此,您可以添加多个空行(我将使用 3 个空行作为示例),避免插入模式,方法是:
3[<Space>
然后进入插入模式并输入!
起初我认为这个映射看起来有点尴尬和违反直觉,但现在我每天使用它很多次并且会想念它。有了插件中的其他映射[
和]
基础映射,一切就变得自然了。
例如,您可以将当前行与其上面的 [count] 行交换[e
(或将上面的行交换为]e
)。因此,要交换几行,您可以执行ddjp
“删除,向下移动一行,然后越过下方”或简单地执行]e
.
答案3
只需移至您想要在后面添加内容的行(another line
在您的示例中),然后,
- 按 打开新行o,
- 在输入新行之前再按Enter一次以插入空行,
- 按Enter两次可终止该行并在您刚刚输入的行后创建一个空行。
完成(按Escape返回正常模式)。
这对应于sed
脚本
/^another line$/ a\
\
MY NEWLY inserted line;\
\
或到ed
会议
1;/^another line$/ a
MY NEWLY inserted line;
.