【问题标题】:Emacs: How to redefine Ctrl-Enter when CUA-mode is enabled?Emacs:启用 CUA 模式时如何重新定义 Ctrl-Enter?
【发布时间】:2020-08-01 09:14:59
【问题描述】:

如果启用 cua-mode,重新定义 Ctrl-Enter 不会按预期工作,并且始终运行 cua-set-rectangle-mark功能。在下面的代码中,您可以看到我还为我的函数定义了 Alt-Enter,仅用于测试,并且运行良好。但我希望将 Alt-Enter 留给 cua-set-rectangle-mark 因为我更喜欢使用 Ctrl-Enter 来调用我的函数在当前行下方创建一行。怎么了?

(cua-mode t)
(defun vscode-insert-line-below()
  (interactive)
  (move-end-of-line 1)
  (newline-and-indent))
(global-set-key (kbd "C-<return>") 'vscode-insert-line-below)
(global-set-key (kbd "M-<return>") 'vscode-insert-line-below)

【问题讨论】:

    标签: emacs key-bindings cua-mode


    【解决方案1】:

    这可能就是你想要的:

    (cua-mode t)
    (defun vscode-insert-line-below()
      (interactive)
      (move-end-of-line 1)
      (newline-and-indent))
    (define-key cua-global-keymap (kbd "<C-return>") 'vscode-insert-line-below)
    

    (您可以使用(kbd "&lt;C-return&gt;") 或(kbd "C-&lt;return&gt;"),但我喜欢使用C-h k 向我展示的形式。)

    当您在cua-mode 中时,本地键映射为cua-global-keymap,其绑定覆盖相同的全局绑定。

    我通过在cua-mode 中执行C-h k C-RET 找到了该地图。它告诉我:

    &lt;C-return&gt; 运行命令cua-set-rectangle-mark(在 cua-global-keymap),这是一个交互式自动加载的 Lisp 函数 在cua-rect.el。

    绑定到&lt;C-return&gt;。

    [在加载函数定义之前,参数列表不可用。]

    在鼠标点击位置开始矩形。

    【讨论】:

    • 成功了。谢谢德鲁。我刚开始使用 Emacs 和 Emacs Lisp。它对我来说仍然很神秘:-)
    猜你喜欢
    • 2015-02-22
    • 2016-03-07
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-25
    相关资源
    最近更新 更多