Recommendation

Lispy overrides some keys in insert mode if the cursor is immediately before ( or after ).

If you are proficient in Vim, maybe you donā€™t need this module.

Key bindings

Movement: h j k l as usual, f to step into and b to move back in history

Slurp: > Barf: < Clone: c

Forward: ] Backward: [ Jump to matching pair: d

Split: M-j Join: +

Typing " inside of a string inserts \"\", so the split command is very useful for string templating.

Insert

Parens: ( Braces: { Brackets: } Quotes: "

LispyVille

The default key theme:

  :init
  (setq lispyville-key-theme
        '((operators normal)
          c-w
          (prettify insert)
          (atom-movement t)
          slurp/barf-lispy
          additional
          additional-insert))

Each (key-theme modes) is a pair of a LispyVille key theme and modes in which to bind them. For example, (escape insert) binds the ā€œescapeā€ theme in just the insert state. Without (), the default is to bind normal and visual states.

As described in https://github.com/abo-abo/lispy/issues/534, for arrow keys to work in xterm, M-O must be free from bindings in Emacs.

However, package lispyville binds both M-o and M-O keys to its functions with evil-define-key*. Unbind them with the following config.

(map! :after lispyville
      :map lispyville-mode-map
      :n "M-O" nil
      :n "M-o" nil)

Given the order Doom Emacsā€™ config gets loaded,

  1. private/<user-login-name>/config.el is loaded automatically, after all other modules. Keeping :private <user-login-name> in init.el is harmless, but does nothing.
  2. private/<user-login-name>/init.el is loaded before all modules.
  3. If your needs are simple, use after! to reconfigure packages.

we could also configure lispyville-key-theme in config.el, but remember to put it in at top-level, not within after!.

(setq lispyville-key-theme
      '((operators normal)
        c-w
        (prettify insert)
        (atom-movement t)
        slurp/barf-lispy
        additional
        ;; additional-insert ; disabled for tty
        ))

References