我想设置简单的用户自定义命令,以便能够在VIM中一次注释掉多行。我试过这个
:command -range Cm :<line1>,<line2>s/^/##/
并如图所示调用
:Cm 11,14
但是收到错误Trailing Characters
。也尝试使用-nargs = +替换-range,但仍然不起作用。任何人都可以帮助我,我在这里失踪了吗?
答案 0 :(得分:6)
用户定义的命令以与其他Vim命令相同的方式接受范围。也就是说,它们来自命令行的开头。你想要执行
:11,14Cm
答案 1 :(得分:5)
vim中有许多好的插件可供评论,包括tComment和vim-commentary。但是,如果你想制作这样的自定义命令,这里是一个从以下开始的模板:
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
此命令采用范围或参数。允许它采用范围是有用的,因为您可能希望在视觉选择上操作命令。它将默认范围设置为当前行,然后说明当前行是否是我们正在操作的所有行,忽略给定的范围,而是查看给定的参数。