3

我使用安装了 Vimpulse 的 Emacs。一个人写很多的时候,我想在Ctrl/ Alt- 键中做。但是在组织文本结构或使用其他应用程序时,我更喜欢 Emacs 中的 Vim。

问题是每个中相同动作的键是不同的,这在我注意到之前就做了很多错误的击键。那么,在 Emacs 中,有什么建议Ctrl-Key就像对于 VimAlt的 LowerCaseKey 和 -Key 作为 Vim 的 HigherCaseKey 一样?

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

4

2 回答 2

2

我没有经验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-map, viper-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)检查您希望重新映射的键序列当前绑定到什么。

于 2012-06-19T02:21:52.990 回答
0

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

绑定如下:

;;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)
于 2012-06-19T09:32:36.103 回答