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

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


当前回答

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

 some█
 code
 here

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

gg

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

I / /空间

 // █some
 code
 here

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

j。j。

 // some
 // code
 //█here

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

其他回答

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

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

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

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

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

:%s!^!//!

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

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

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

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

然后执行c#<ESC>p

改为“#” 放回去

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

:vmap \q c#<ESC>p

还有另一种方式:

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