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

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


当前回答

在每行开头插入“ABC”:

进入命令模式 %定额I ABC

其他回答

还有另一种方式:

移动到一行的开头 进入Visual Block模式(CTRL-v) 选择你想要的线(用j/k向上/向下移动,或者用[line]G跳转到一条线) 按I(大写I) 输入注释字符 按ESC

搜索和替换的一般模式是:

:s/search/replace/

将当前行中第一次出现的'search'替换为'replace'

:s/search/replace/g

将当前行中所有出现的'search'替换为'replace', 'g'是'global'的缩写

此命令将只替换当前行中出现的'search'。%用于搜索整个文件。要交互式地确认每个替换,需要添加一个'c'来确认:

:%s/search/replace/c

交互式确认替换'搜索'与'替换'为整个文件

你可以使用一个行号范围来代替%字符(注意'^'字符是一个特殊的搜索字符,用于行开始):

:14,20s/^/#/

在第14-20行开始处插入'#'字符

如果你想使用另一个注释字符(比如//),那么改变你的命令分隔符:

:14,20s!^!//!

在第14-20行开始处插入'//'字符序列

或者你可以像这样转义//字符:

:14,20s/^/\/\//

在第14-20行开始处插入'//'字符序列

如果在编辑器中看不到行号,只需键入以下内容

:set nu

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

:%s/^/#/

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

对于代码块的注释,我喜欢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中的“多行插入文本”。