Skip to content

cofi/evil-leader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 

Repository files navigation

What’s Evil Leader?

Evil Leader provides the <leader> feature from Vim that provides an easy way to bind keys under a variable prefix key. For an experienced Emacs User it is nothing more than a convoluted key map, but for a Evil user coming from Vim it means an easier start.

Installation

Put evil-leader.el into load-path and (require 'evil-leader).

Usage

(global-evil-leader-mode)

to enable evil-leader in every buffer where evil is enabled.

Note: You should enable global-evil-leader-mode before you enable evil-mode, otherwise evil-leader won’t be enabled in initial buffers (*scratch*, *Messages*, …).

Use evil-leader/set-key to bind keys in the leader map. For example:

(evil-leader/set-key "e" 'find-file)

You can also bind several keys at once:

(evil-leader/set-key
  "e" 'find-file
  "b" 'switch-to-buffer
  "k" 'kill-buffer)

The key map can of course be filled in several places.

After you set up the key map you can access the bindings by pressing <leader> (default: \) and the key(s). E.g. \ e would call find-file to open a file.

If you wish to change so you can customize evil-leader/leader or call evil-leader/set-leader, e.g. (evil-leader/set-leader ",") to change it to “,”. The leader has to be readable by read-kbd-macro, so using Space as a prefix key would be (evil-leader/set-leader "<SPC>").

Beginning with version 0.3 evil-leader has support for mode-local bindings:

(evil-leader/set-key-for-mode 'emacs-lisp-mode "b" 'byte-compile-file)

Again, you can bind several keys at once.

A mode-local binding shadows a normal mode-independent binding.

FAQ

<leader> is not working in certain buffers! Why?

This can have two reasons. First, the buffer is not in normal state (like insert or emacs state). If you set evil-leader/in-all-states to non-nil (before loading evil-leader or via customize) you can access the leader keymap still with the non-normal-prefix + leader (default: C-\).

Another option is to use evil-leader/no-prefix-mode-rx if you want the non-prefixed <leader> in certain major modes. But be careful as this introduces the <leader> in the insert and emacs states which means you can’t type the char <leader> (\ by default). E.g. this code will let you use the non-prefixed <leader> in magit’s and gnus’ modes:

(setq evil-leader/no-prefix-mode-rx '("magit-.*-mode" "gnus-.*-mode"))

Second, <leader> can be overshadowed by the current major-mode because evil-leader uses the global keymap which has a lower priority than the local keymap. To still use <leader> you have to either use another key or have a look at C-h k <leader>, if it is bound then it overshadows the evil-leader keymap.