在Vim中,如何在选择中的每一行的开头插入字符?
例如,假设我的语言的注释系统不允许像/* */这样的块注释,我想通过在每一行的开头预先添加//来注释掉一个代码块。我该怎么做呢?
在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(在正常模式下)恢复最后的可视选择,这有时很方便。