我想设置简单的用户定义命令,以便能够在VIM中一次注释多行。我想这在用户定义命令中使用行号
:command -range Cm :<line1>,<line2>s/^/##/
,并调用它,如
:Cm 11,14
但得到的错误说Trailing Characters
。还试图用-nargs = +相同的替换 - 范围,但仍然无法正常工作。任何人都可以帮助我什么,我在这里失踪?
我想设置简单的用户定义命令,以便能够在VIM中一次注释多行。我想这在用户定义命令中使用行号
:command -range Cm :<line1>,<line2>s/^/##/
,并调用它,如
:Cm 11,14
但得到的错误说Trailing Characters
。还试图用-nargs = +相同的替换 - 范围,但仍然无法正常工作。任何人都可以帮助我什么,我在这里失踪?
用户定义的命令以与其他Vim命令相同的方式接受范围。也就是说,它们出现在命令行的开头。你会想执行
:11,14Cm
有意见征求在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
此命令可以使用一个或多个参数。由于您可能希望通过视觉选择来操作命令,因此允许它取一个范围很有用。它将默认范围设置为当前行,然后说明当前行是否是我们正在操作的所有行,忽略给定的范围,而是查看给定的参数。