Emacs同时复制区域/行和注释

时间:2014-05-11 03:22:03

标签: emacs elisp evil-mode

我正在尝试实现以下内容:复制当前选定的区域或一行(如果没有选择)并在comment-or-uncomment-region-or-line的帮助下注释掉原始区域。

我想我可以使用kill-region后跟yank,但之后原来的选择会丢失,所以我无法发表评论。另一方面,如果我先发表评论,我会将我所在地区的两份副本都注释掉。

我有另一个想法(我认为更好,因为我使用邪恶模式)是使用evil-yank然后evil-visual-restore来恢复选择,以便我可以将其评论出来。但我无法确定要传递给evil-yank的参数以指定所选区域。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:5)

你缺少的主要是函数copy-region-as-kill

(defun copy-and-comment-region (beg end &optional arg)
  "Duplicate the region and comment-out the copied text.
See `comment-region' for behavior of a prefix arg."
  (interactive "r\nP")
  (copy-region-as-kill beg end)
  (goto-char end)
  (yank)
  (comment-region beg end arg))