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

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


当前回答

还有另一种方式:

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

其他回答

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

选择一些文本:

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

备注:

,cc

取消:

,cu

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

,c<space>

如果你想要更加花哨,把这个放在你的。vimrc中:

vmap \c :s!^!//!<CR>
vmap \u :s!^//!!<CR>

然后,无论何时在可视模式下,您都可以按\c来注释该块,按\u来取消注释。当然,你可以把这些快捷键击变成任何东西。

在每行开头插入“ABC”:

进入命令模式 %定额I ABC

还有另一种方式:

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

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

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

另一种方法对新人来说可能更容易:

 some█
 code
 here

把光标放在第一行上,例如by

gg

然后输入以下命令进入插入模式并添加文本:

I / /空间

 // █some
 code
 here

按Esc返回命令模式并使用有向图:

j。j。

 // some
 // code
 //█here

J是一个运动命令,向下走一行。重复您所执行的最后一个编辑命令。