2014-01-31 14 views
3

我想设置简单的用户定义命令,以便能够在VIM中一次注释多行。我想这在用户定义命令中使用行号

:command -range Cm :<line1>,<line2>s/^/##/ 

,并调用它,如

:Cm 11,14 

但得到的错误说Trailing Characters。还试图用-nargs = +相同的替换 - 范围,但仍然无法正常工作。任何人都可以帮助我什么,我在这里失踪?

回答

6

用户定义的命令以与其他Vim命令相同的方式接受范围。也就是说,它们出现在命令行的开头。你会想执行

:11,14Cm 
5

有意见征求在vim,包括tCommentvim-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 

此命令可以使用一个或多个参数。由于您可能希望通过视觉选择来操作命令,因此允许它取一个范围很有用。它将默认范围设置为当前行,然后说明当前行是否是我们正在操作的所有行,忽略给定的范围,而是查看给定的参数。

相关问题