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

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


当前回答

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

 some█
 code
 here

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

gg

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

I / /空间

 // █some
 code
 here

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

j。j。

 // some
 // code
 //█here

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

其他回答

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

:%s/^/#/

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

它将每一行的开头替换为"//":

:%s!^!//!

它将每一行的开头(使用可视模式选择)替换为"//":

:'<,'>s!^!//!

注意,gv(在正常模式下)恢复最后的可视选择,这有时很方便。

将注释区域标记为可视块(<C-V)

然后执行c#<ESC>p

改为“#” 放回去

如果你经常这样做,在你的.vimrc中定义一个快捷方式(例如\q)

:vmap \q c#<ESC>p

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

 some█
 code
 here

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

gg

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

I / /空间

 // █some
 code
 here

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

j。j。

 // some
 // code
 //█here

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

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

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

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