代码之家  ›  专栏  ›  技术社区  ›  EoghanM

Emacs:操作后保持选定区域

  •  19
  • EoghanM  · 技术社区  · 17 年前

    在emacs中,执行以下操作后 comment-region

    3 回复  |  直到 17 年前
        1
  •  10
  •   Brian Campbell Dennis Williamson    17 年前

    如果取消选择该地区,听起来你一定在使用 transient-mark-mode .In 瞬态标记模式 ,当您执行操作该区域的命令时,该区域将被取消选择(特别是,标记仍然存在,但处于非活动状态)。您可以使用以下命令重新选择区域(重新激活标记) C-x C-x ( exchange-point-and-mark ).

    如果要完全禁用取消选择,可以关闭 瞬态标记模式 。这意味着您将无法突出显示当前区域,但如果您想设置标记并突出显示该区域,可以 turn on transient mark mode briefly C-<SPC> C-<SPC> C-u C-x C-x .

        2
  •  0
  •   Garr Lystad    6 年前

    deactivate-mark

    (defun acg/with-mark-active (&rest args)
      "Keep mark active after command. To be used as advice AFTER any
    function that sets `deactivate-mark' to t."
      (setq deactivate-mark nil))
    
    (advice-add 'comment-region :after #'acg/with-mark-active)
    

    在上面的示例中,您可以替换 comment-region 具有您想要的任何其他功能。

        3
  •  0
  •   Arthur Colombini Gusmão    5 年前

    幸运的是,键盘宏在更改区域时不会取消选择。因此,您可以编写函数,然后创建一个kbd宏来调用您的函数,然后执行C-x C-x一次,或者,如果您关心点和标记的原样,请执行两次。然后命名您的kbd宏。然后M-x写入kbd宏,在系统提示时,为其指定要附加宏的文件名,然后为其指定新宏的名称。如果现在将宏绑定到某个键,则可以重复按下该键而不会丢失该区域。 如果Emacs的“interactive”将“_”作为字符串参数的一部分,以保留区域并突出显示XEmacs的“interview”方式,那当然会很好。