如何在邪恶模式下轻松导航窗口动作?

时间:2014-05-10 06:57:08

标签: emacs evil-mode

在vim中,我在.vimrc中有这个:

" Easy window navigation
map <C-h> <C-w>h
map <C-j> <C-w>j
map <C-k> <C-w>k
map <C-l> <C-w>l

如何在邪恶模式下获得简易窗口导航?

另外,在vim中“+会复制到我的系统剪贴板?这似乎不适用于emacs。

$ emacs --version
  

GNU Emacs 24.3.1版权所有(C)2013 Free Software Foundation,Inc。GNU   Emacs绝对不提供任何担保。您可以重新分发副本   根据GNU通用公共许可证的条款,Emacs。更多   有关这些事项的信息,请参阅名为COPYING的文件。

$ cat .emacs

;;

;; Package manager and better repos
(require 'package)
(add-to-list 'package-archives 
                 '("marmalade" .
                         "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(package-initialize)

(setq backup-directory-alist `(("." . "~/.emacs.d/saves")))

;; Indents, tab as spaces
(setq-default indent-tabs-mode nil)
(setq default-tab-width 2)

;; evil-mode
(eval-after-load "evil"
  '(progn
     (define-key evil-normal-state-map (kbd "C-h") 'evil-window-left)
     (define-key evil-normal-state-map (kbd "C-j") 'evil-window-down)
     (define-key evil-normal-state-map (kbd "C-k") 'evil-window-up)
     (define-key evil-normal-state-map (kbd "C-l") 'evil-window-right)))
(require 'evil)
(evil-mode 1)
;(setcdr evil-insert-state-map nil)
;(define-key evil-insert-state-map [escape] 'evil-normal-state)

;; Fun stuff
(require 'jabber-autoloads)
(require 'jabber)

1 个答案:

答案 0 :(得分:11)

您可以将要使用的键绑定添加到evil-normal-state-map

(eval-after-load "evil"
  '(progn
     (define-key evil-normal-state-map (kbd "C-h") 'evil-window-left)
     (define-key evil-normal-state-map (kbd "C-j") 'evil-window-down)
     (define-key evil-normal-state-map (kbd "C-k") 'evil-window-up)
     (define-key evil-normal-state-map (kbd "C-l") 'evil-window-right)))

将代码包装到eval-after-load是必要的,以确保在拨打evil-normal-state-map时定义/可用define-key

如果你想在其他&#34;状态&#34;中提供相同的绑定。 (例如&#34; Motion&#34;状态),只需将它们添加到相应的键映射中,如上所示(在&#34; Motion&#34;状态下,相应的映射称为{{1 }})。


要让Emacs使用系统剪贴板,请尝试将evil-motion-state-map设置为非x-select-enable-clipboard值:

nil

还有使用剪贴板的杀戮和劫持的特定命令。来自文档:

  • (setq x-select-enable-clipboard t)

      

    杀死该区域,并将其保存在X剪贴板中。

  • clipboard-kill-region

      

    复制区域以杀死响铃,并保存在X剪贴板中。