我使用安装了Vimpulse的Emacs。当我自己写很多时,我想在 Ctrl / Alt - Key中进行。但是在组织文本结构或与其他应用程序一起工作时,我更喜欢Emacs中的Vim。
问题在于每个键中相同操作的键是不同的,这在我注意到之前会造成很多错误的键击。因此,任何建议使 Ctrl - Key 作为LowerCaseKey对Vim做,而 Alt -Key作为Vim的HigherCaseKey,在Emacs中?
或者如果这很难,我能否找到改变的Vimpulse来使密钥成为Emacs?
答案 0 :(得分: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
)来检查您要重新映射的键序列当前绑定的内容。
答案 1 :(得分:0)
我尝试在“require'vimpulse'”之前在.Emacs文件中添加键绑定。但它没有用。所以我在“require'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)