Emacs下支援多行程式碼的註釋/反註釋,命令是comment-or-uncomment-region。
我喜歡把它繫結在快捷鍵C-c C-/上,如下:
(global-set-key [?\C-c ?\C-/] 'comment-or-uncomment-region)
這樣當選定多行程式碼的時候就可以方便的進行註釋/反註釋了。
但是這個命令有一個小問題,那就是隻能針對當前選中的行(region)做操作。
如果當前沒有選中任何行的話就什麼也不做。
用過Eclipse的同學都知道,在Eclipse裡面用C-/來進行註釋/反註釋操作時,
如果選中多行則註釋/反註釋選中行,如果什麼都沒有選中,則針對當前游標所在行進行操作。
這個功能還是比較方便的,如何能讓Emacs也能做到這一點呢?
在自己的.emacs追加如下函式定義就可以了,這個函式會加入針對region的判斷和處理:
(defun my-comment-or-uncomment-region (beg end &optional arg)
(interactive (if (use-region-p)
(list (region-beginning) (region-end) nil)
(list (line-beginning-position)
(line-beginning-position 2))))
(comment-or-uncomment-region beg end arg)
)
(global-set-key [remap comment-or-uncomment-region] 'my-comment-or-uncomment-region)
現在Emacs的行為接近於Eclipse了,不過還是有幾處細微的不同:
(1)它不會像Eclipse那樣,在選中多行註釋的時候,把其中的空行也加上註釋
(2)Eclipse的註釋一律加在一行頂頭的位置,而Emacs會加在相應indent對齊的位置。
當然,具體的行為方式在Emacs中肯定是可以調整的,對我來說現在Emacs的方式已經可以滿足我的需要了。
參考url:http://www.emacswiki.org/emacs/WholeLineOrRegion
/********************************************************************
* 不落魄的書生的記事簿[blog.csdn.net/songyuanyao]
********************************************************************/