我正在处理一段类似于以下的注释块:
//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
地址指的是距离当前行三行的那一行。V
创建一个跨越所有需要操作的行的可视块。然后,在输入:
以开始命令时,它会自动填充范围,指定可视块。然后,你可以输入以s
或g
开头的任意一个命令。:'<,'>s/$/\r
,
是什么意思吗? - Rodqao<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
一个人可以使用命令
:g/^/pu_
整个缓冲区(默认)或所选择的行范围。
使用 V 键选择您的可视区域
然后运行正则表达式替换,将一个换行符替换为两个
:s/\n/\r\r/g
使用 V 选择你想要的行。
然后输入 : 和 s/\ze/\r
:g//norm o
。我不知道哪一个更令人惊叹,vim还是StackOverflow社区! - drug_user841417