3

我正在处理一组评论,例如:

//this is comment 1
//this is comment 2
//this is comment 3
//this is comment 4

我想让它看起来像:

//this is comment 1

//this is comment 2

//this is comment 3

//this is comment 4

在命令模式下,是否有 Vim 快捷方式可以在选定的行上进行这种转换?

4

5 回答 5

4

您可以使用该:substitute命令。将光标放在第一行的任意位置:

:,+3s/$/\r

这会在每行的末尾插入一个额外的换行符。

您也可以使用该:global命令。将光标放在第一行的任意位置,运行:

:,+3g//norm o

对于接下来的四行中的每一行,这将执行o正常模式命令,添加一个新的空白行。

在这两个命令中,,+3 前缀都是命令的范围,请参阅:help range. 简而言之,逗号分隔范围的起始行和结束行的地址,如果我们省略两个地址中的前者,则使用当前行。+3 地址是指当前行以下三行的行。

,+3您可以使用 V普通模式命令在您想要的所有行上创建一个可视块,而不是为这些命令中的任何一个指定范围,例如。然后键入 :开始命令将自动填充指定可视块的范围,然后您可以输入以 s或 开头的两个命令中的任何一个g

:'<,'>s/$/\r
于 2012-09-12T02:18:55.777 回答
1

可以使用命令

:g/^/pu_

在整个缓冲区(默认情况下)或选定的行范围内。

于 2012-09-12T22:04:46.083 回答
1

您可以使用宏:

qao<esc>jq

然后使用3@a在最后几行应用宏 3 次。

在哪里:

qa    "Start recording a macro named a
o     "Insert new line under current line
<esc> "Exit insert mode
j     " Move down next line
q     " end macro
于 2012-09-12T02:21:51.427 回答
1

选择您的视觉选择V

然后运行正则表达式替换以将一个换行符替换为两个

:s/\n/\r\r/g

于 2012-09-12T02:24:11.020 回答
0

选择你想要的线条V

然后输入:s/\ze/\r

于 2012-09-12T14:46:23.600 回答