2014-01-31 43 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 

此命令可以使用一個或多個參數。由於您可能希望通過視覺選擇來操作命令,因此允許它取一個範圍很有用。它將默認範圍設置爲當前行,然後說明當前行是否是我們正在操作的所有行,忽略給定的範圍,而是查看給定的參數。

相關問題