我想设置简单的用户定义命令,以便能够在VIM中一次注释掉几行.我试过这个
:command -range Cm :<line1>,<line2>s/^/##/
Run Code Online (Sandbox Code Playgroud)
并如图所示调用它
:Cm 11,14
Run Code Online (Sandbox Code Playgroud)
但得到错误说Trailing Characters.也尝试使用-nargs = +替换-range,但仍然无效.谁能帮助我,我在这里失踪了?
在vim中有许多好的插件可供评论,包括tComment和vim- comment.但是,如果你想制作这样的自定义命令,这里有一个模板:
command! -range -nargs=* Cm <line1>,<line2>call Comment(<f-args>)
fun! Comment(...) range
if a:firstline != a:lastline
sil exe a:firstline . "," . a:lastline . "s/^/##/"
else
sil exe a:1 . "," . a:2 . "s/^/##/"
endif
endfun
Run Code Online (Sandbox Code Playgroud)
此命令采用范围或参数.允许它采用范围是有用的,因为您可能希望在视觉选择上操作命令.它将默认范围设置为当前行,然后说明当前行是否是我们正在操作的所有行,忽略给定的范围,而是查看给定的参数.