Emacs如何同时复制区域/行并添加注释

8
我试图实现以下内容:复制当前选定的区域或一行(如果没有选择),并使用comment-or-uncomment-region-or-line帮助注释原始区域。
我想我可以使用kill-region,然后使用yank,但是我的原始选择会丢失,因此我无法进行评论。另一方面,如果我首先进行评论,我将得到两个副本的区域被注释掉。
我有另一个想法(我认为这更好,因为我使用恶魔模式),就是使用evil-yank,然后使用evil-visual-restore恢复选择,以便我可以进行评论。但是,我无法弄清楚传递给evil-yank的参数来指定所选区域。
我在这里错过了什么?
1个回答

8
你缺少的主要内容是函数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))

谢谢!我该如何在这之后向下移动一行?我尝试了(next-line 1),但出于某种原因似乎不起作用。 - egdmitry
请查看函数 forward-line - Drew
它的工作效果不太好。我怀疑这与evil模式有关,如果我使用V选择区域,则forward-line无法正常工作。 - egdmitry
也许您可以发布另一个与您当前问题相关的问题。它可能更适用于 Evil 模式,就像您怀疑的那样。 (我假设您至少尝试过不使用 Evil 模式进行比较。) - Drew
几乎正确! - CD86
1
这是一个非常方便的功能,用于重构/研究,还有它的短兄弟duplicate-region。我早就应该在一百万次按键之前搜索它了。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接