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

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


当前回答

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

:%s/^/#/

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

其他回答

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

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

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

然后执行c#<ESC>p

改为“#” 放回去

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

:vmap \q c#<ESC>p

在每行开头插入“ABC”:

进入命令模式 %定额I ABC

我可以推荐EnhCommentify插件。

如。把这个放到你的vimrc中:

let maplocalleader=','
vmap <silent> <LocalLeader>c <Plug>VisualTraditional
nmap <silent> <LocalLeader>c <Plug>Traditional
let g:EnhCommentifyBindInInsert = 'No'
let g:EnhCommentifyMultiPartBlocks = 'Yes'
let g:EnhCommentifyPretty = 'Yes'
let g:EnhCommentifyRespectIndent = 'Yes'
let g:EnhCommentifyUseBlockIndent = 'Yes'

然后,您可以使用',c'注释/取消注释(选定的)行

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

:%s!^!//!

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

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

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