我正在处理一组评论,例如:
//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 快捷方式可以在选定的行上进行这种转换?
您可以使用该:substitute
命令。将光标放在第一行的任意位置:
:,+3s/$/\r
这会在每行的末尾插入一个额外的换行符。
您也可以使用该:global
命令。将光标放在第一行的任意位置,运行:
:,+3g//norm o
对于接下来的四行中的每一行,这将执行o
正常模式命令,添加一个新的空白行。
在这两个命令中,,+3
前缀都是命令的范围,请参阅:help range
. 简而言之,逗号分隔范围的起始行和结束行的地址,如果我们省略两个地址中的前者,则使用当前行。+3
地址是指当前行以下三行的行。
,+3
您可以使用 V
普通模式命令在您想要的所有行上创建一个可视块,而不是为这些命令中的任何一个指定范围,例如。然后键入 :
开始命令将自动填充指定可视块的范围,然后您可以输入以 s
或 开头的两个命令中的任何一个g
:
:'<,'>s/$/\r
可以使用命令
:g/^/pu_
在整个缓冲区(默认情况下)或选定的行范围内。
您可以使用宏:
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
选择您的视觉选择V
然后运行正则表达式替换以将一个换行符替换为两个
:s/\n/\r\r/g
选择你想要的线条V
然后输入:和s/\ze/\r