在Vim中,如何在选择中的每一行的开头插入字符?

例如,假设我的语言的注释系统不允许像/* */这样的块注释,我想通过在每一行的开头预先添加//来注释掉一个代码块。我该怎么做呢?


当前回答

还有另一种方式:

:'<,'>g/^/norm I//

/^/只是一个匹配每一行的虚拟模式。Norm允许您运行下面的普通模式命令。I//表示进入插入模式,同时将光标跳转到行首,然后插入下面的文本(两个斜杠)。

:g通常用于在多行上做一些复杂的事情,在那里你可能想在多个模式之间跳转,删除或添加行,移动光标,运行一堆宏,等等。你可以告诉它只对匹配模式的行进行操作。

其他回答

对于代码块的注释,我喜欢NERD的Commenter插件。

选择一些文本:

Shift-V
...select the lines of text you want to comment....

备注:

,cc

取消:

,cu

或者只是切换一行或块的注释状态:

,c<space>

按Esc进入“命令模式” 使用Ctrl+V进入可视块模式 向上/向下移动以选择所需行的文本列 发表评论。 然后按Shift+i,输入你想要插入的文本。 然后按Esc键,等待1秒,插入的文本将出现在每行。

欲了解更多信息和阅读,请查看Vim Tips Wiki中的“多行插入文本”。

这将在每一行的开头添加#:

:%s/^/#/

人们将不再抱怨你缺乏适当的注释脚本。

如果有人的多行选择实际上是一个段落,则不需要手动选择行。Vim可以为您做到这一点:

Vip:选择并标记整个段落 Shift-i:在行首插入文本 转义:离开插入模式/进入正常模式[行开头仍然选中] 转义:取消选择行开头

还有另一种方式:

:'<,'>g/^/norm I//

/^/只是一个匹配每一行的虚拟模式。Norm允许您运行下面的普通模式命令。I//表示进入插入模式,同时将光标跳转到行首,然后插入下面的文本(两个斜杠)。

:g通常用于在多行上做一些复杂的事情,在那里你可能想在多个模式之间跳转,删除或添加行,移动光标,运行一堆宏,等等。你可以告诉它只对匹配模式的行进行操作。