【问题标题】:How can I remove a key binding so that the cua C-x key binding so that I can have the original effects of C-x?怎样才能去掉一个键绑定,让cua C-x 键绑定,这样我才能拥有C-x 原来的效果呢?
【发布时间】:2021-05-11 23:26:55
【问题描述】:

在 cua 模式下,我希望 C-x 表现得好像 cua 模式没有激活一样。我喜欢 cua C-cC-vC-z。但是,我逐渐习惯了 eMac 对 C-x 的使用,并且我希望 C-x 保持原样,不管有没有选择。

(define-key cua--prefix-repeat-keymap (kbd "C-x") nil)

成功地将值修改为 nil,但 cua 仍然奇怪地影响 C-x 的功能,如果它有任何作用的话。

我想要一种完全删除键绑定的方法,因为在这种情况下,将值设置为 nil 不会导致绑定被忽略。

对于好奇...我更喜欢 delete 导致删除的范围进入 yank 堆栈(就像 cua C-x 会做的那样)。我通过以下方式实现了这一点:

(bind-keys ([delete] . (lambda ()
      "Kill active region to the yank stack.
Otherwise, perform normal delete.
Use backspace for an emacs range delete into register 0."
       (interactive)
       (if (use-region-p)
           (delete-active-region t) ;; yank selection into stack
         (delete-char 1))))) ;; forget singly removed characters

【问题讨论】:

    标签: emacs key-bindings cua


    【解决方案1】:

    通过堆栈交换How to implement remove-key to completely undo the effect of define-key,我提取了成功删除键绑定的 elisp。

    (defun remove-key (keymap key)
      (define-key keymap key nil)
      (setq key (cl-mapcan (lambda (k)
                             (if (and (integerp k)
                                      (/= (logand k ?\M-\^@) 0))
                                 (list ?\e (- k ?\M-\^@))
                               (list k)))
                           key))
      (if (= (length key) 1)
          (delete key keymap)
        (let* ((prefix (vconcat (butlast key)))
               (submap (lookup-key keymap prefix)))
          (delete (last key) submap)
          (when (= (length submap) 1)
            (remove-key keymap prefix)))))
    

    使用remove-key,成功消除所有对C-x的cua反应:

    (remove-key cua--prefix-repeat-keymap (kbd "C-x"))
    

    【讨论】:

      【解决方案2】:

      你真的关心C-cC-vC-z吗?

      如果不是,那么您只想使用cua-selection-mode 而不是cua-mode

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-20
        • 2010-11-21
        • 2018-08-29
        • 1970-01-01
        相关资源
        最近更新 更多