在 Emacs 中,如何将 Ctrl-Key 设置为 LowerCaseKey for Vim,将 Alt-Key 设置



我使用安装了 Vimpulse 的 Emacs。当自己写很多东西时,我想用 Ctrl/Alt - 键来完成。但是在组织文本结构或使用其他应用程序时,我更喜欢 Emacs 中的 Vim。

问题是每个相同操作的键是不同的,这在我注意到之前就做了很多错误的击键。那么,在Emacs中,有什么建议可以让Ctrl-Key像LowerCaseKey一样用于Vim,而Alt-Key作为Vim的HighCaseKey吗?

或者,如果这很难,我能找到改变的 Vimpulse 来制作 Emacs 的密钥吗?

我对viper-mode没有经验,但根据我所做的有限测试,如下所示的东西似乎有效:

(add-hook 'viper-load-hook
  #'(lambda ()
      (define-key viper-insert-basic-map (kbd "C-d") nil)
      (define-key viper-insert-basic-map (kbd "C-d C-d") 'kill-line)))

您可以将所需的任何其他定义添加到该钩子中,以确保在启动时对其进行评估。但是,您需要小心选择的键绑定。 C-y,例如,您特别提到的,通常绑定到yank,我怀疑您可能不想解除绑定。此外,viper-mode似乎使用了一组非常复杂和精心设计的重叠键盘映射,因此根据您希望启用的功能,您可能需要指定一个不同的键盘映射(或者实际上,几个不同的键盘映射并行使用),例如 viper-vi-global-user-mapviper-insert-global-user-map 等。不幸的是,这就是我的专业知识范围 w/r/t viper-mode.

编辑:对不起,我想我可能误解了你的要求。如果要在 viper-mode 之外应用这些键绑定,请使用 global-set-key ,即:

(global-unset-key (kbd "C-d"))
(global-set-key (kbd "C-d C-d") 'kill-line)

等等。同样,请注意您设置的绑定。使用 describe-key(默认绑定到 C-h k )检查要重新映射的键序列当前绑定到什么。

我尝试在.Emacs 文件在"require 'vimpulse'"之前。但它不起作用。所以我在"需要'vimpulse'"之后添加了键绑定。然后,无论 vimpulse 是打开还是关闭,它都会替换所有内容。这根本不是一个优雅的解决方案。但我想我可以忍受。(顺便说一句,如果有 c-d,"\C-d \C-d"将不起作用)

绑定如下:

;;remap keys like vim
(global-set-key (kbd "M-3") 'server-edit)                    ;; #
(global-set-key (kbd "M-4") 'move-end-of-line)               ;; $
(global-set-key (kbd "M-5") 'query-replace-regexp)           ;; % 
(global-set-key (kbd "M-6") 'move-beginning-of-line)         ;; ^
(global-set-key (kbd "C-w") 'forward-word)
(global-set-key (kbd "C-t") 'set-mark-command)
(global-set-key (kbd "C-y") 'kill-ring-save)
(global-set-key (kbd "C-u") 'undo)
(delete-selection-mode 1)                               ;; delete selection before yank
(global-set-key (kbd "C-p") 'yank)
(global-set-key (kbd "M-y") 'kill-region)
(global-set-key (kbd "C-x y") 'quick-copy-line)
(global-set-key (kbd "C-d") 'delete-forward-char)
(global-set-key (kbd "C-h") 'left-char)
(global-set-key (kbd "C-j") 'next-line)
(global-set-key (kbd "C-k") 'previous-line)
(global-set-key (kbd "C-l") 'right-char)
(global-set-key (kbd "M-g") 'end-of-buffer)
(global-set-key (kbd "M-j") 'delete-indentation)
(global-set-key (kbd "C-x d") 'kill-whole-line)
(global-set-key (kbd "C-x g") 'beginning-of-buffer)
(global-set-key (kbd "C-b") 'backward-word)
(global-set-key (kbd "C-`") 'bookmark-set)
(global-set-key (kbd "C-.") 'repeat)
(global-set-key (kbd "C-/") 'isearch-forward-regexp)
(global-set-key (kbd "M-m") 'bookmark-jump)
(global-set-key (kbd "M-/") 'isearch-backward-regexp)
(global-set-key (kbd "C-x m") 'bookmark-bmenu-list)

最新更新