繁体   English   中英

Evil Emacs:有没有办法在“插入”模式下禁用类似vim的键?

[英]Evil Emacs: is there a way to disable vim-like keys in «insert» mode?

我喜欢文本对象的VIM想法,因此我安装了EVIL (一个可模拟VIM功能的Emacs插件) 但是我希望«insert»模式保持Emacs的键绑定不变(也许Escape除外,它将切换到«normal»模式) 有什么办法可以做到这一点?

顺便说一句:ATM的“插入”模式有一组混合的热键,这两种方式都不是很舒服。 例如,«Mb»在Emacs中起作用,而«Co»在VIM中起作用。

#emacs IRC频道中,我被告知有人已经解决了类似的问题 这是我使用的修改版本:

(require 'evil)
;; remove all keybindings from insert-state keymap
(setcdr evil-insert-state-map nil)
;; but [escape] should switch back to normal state
(define-key evil-insert-state-map [escape] 'evil-normal-state)
(define-key evil-normal-state-map (kbd "C-u") 'evil-scroll-up)
(define-key evil-normal-state-map (kbd "[ m") 'beginning-of-defun)
(define-key evil-normal-state-map (kbd "] m") 'end-of-defun)
(define-key evil-normal-state-map (kbd "k") 'evil-previous-visual-line)
(define-key evil-normal-state-map (kbd "j") 'evil-next-visual-line)

(evil-mode t)
(setq evil-jumps-cross-buffers nil) ;; for C-o and C-i to not cross buffers
(provide 'emvil)

(provide 'emvil)是为了允许在配置中require '它。 我也发现在下一个拆分屏幕中跳转到定义很有用,除非定义在我当前所在的缓冲区中。这是代码:

(defun evil-goto-definition-next-split ()
    "If there's a free split, goto definition in this split,
    otherwise use current one (except when a definition in the
    current split)"
    (interactive)
    (let ((origin-spl (selected-window))
          (origin-buf (current-buffer)))
      (evil-goto-definition)
      (when (and (eq origin-spl (selected-window)) ;; otherwise it's done
                 (not (eq origin-buf (current-buffer)))) ;; otherwise either definition not found, or
                                                         ;; it's in the same buffer
        (let ((defin-buf (current-buffer))
              (defin-point (point)))
          (switch-to-buffer origin-buf)
          (other-window 1)
          (switch-to-buffer defin-buf)
          (goto-char defin-point)
          ))
      ))
(define-key evil-normal-state-map (kbd "g d") 'evil-goto-definition-next-split)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM