emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] adding custom org-keymaps for EVIL Vim emulator


From: Eric S Fraga
Subject: Re: [O] adding custom org-keymaps for EVIL Vim emulator
Date: Mon, 7 May 2012 14:42:06 +0930
User-agent: Gnus/5.130006 (Ma Gnus v0.6) Emacs/24.1.50 (gnu/linux)

Herbert Sitz <address@hidden> writes:

> I was playing around with Evil and like it quite a bit.  It feels better than
> the previous Viper/Vimpulse package I was using, plus documentation is good,
> clear, and it seems easy to customize.
>
> One problem with Org for me has been keybindings.  Even with a Vim emulator 
> that
> does a decent job of vim-ifying Emacs, it still leaves all of the (numerous)
> Org-specific keymappings to deal with.  It turns out to be quite easy to add
> custom keymappings to Org-mode to make commands accessible in a more Vim-like
> way.  I've added the code below to my .emacs and it's a good start.  Maybe 
> some
> vim-friendly Org users will have ideas on how to grow it from here:

Herbert,

thanks for these.  Very useful.  I already had some bindings but have
added some more based on yours.  My current setup is:

#+begin_src emacs-lisp
(defun esf/evil-key-bindings-for-org ()
  ;;(message "Defining evil key bindings for org")
  (evil-declare-key 'normal org-mode-map
    "gh" 'outline-up-heading
    "gj" 'org-forward-same-level
    "gk" 'org-backward-same-level
    "gl" 'outline-next-visible-heading
    "H" 'org-beginning-of-line ; smarter behaviour on headlines etc.
    "L" 'org-end-of-line ; smarter behaviour on headlines etc.
    "t" 'org-todo ; mark a TODO item as DONE
    ",c" 'org-cycle
    ",e" 'org-export-dispatch
    ",n" 'outline-next-visible-heading
    ",p" 'outline-previous-visible-heading
    ",t" 'org-set-tags-command
    ",u" 'outline-up-heading
    "$" 'org-end-of-line ; smarter behaviour on headlines etc.
    "^" 'org-beginning-of-line ; ditto
    "-" 'org-ctrl-c-minus ; change bullet style
    "<" 'org-metaleft ; out-dent
    ">" 'org-metaright ; indent
    )
  (mapcar (lambda (state)
            (evil-declare-key state org-mode-map
              (kbd "M-l") 'org-metaright
              (kbd "M-h") 'org-metaleft
              (kbd "M-k") 'org-metaup
              (kbd "M-j") 'org-metadown
              (kbd "M-L") 'org-shiftmetaright
              (kbd "M-H") 'org-shiftmetaleft
              (kbd "M-K") 'org-shiftmetaup
              (kbd "M-J") 'org-shiftmetadown))
          '(normal insert)))
#+end_src


I've been using evil now for quite a few months and I am very happy with
it.  Especially for RSI sufferers, a mode based editor avoiding most C-
and M- commands is very nice.

Combined with ratpoison and keynav, my fingers seldom have to leave the
home row!

-- 
: Eric S Fraga (GnuPG: 0xC89193D8FFFCF67D) in Emacs 24.1.50.1
: using Org release_7.8.09-529-g035ab3.dirty




reply via email to

[Prev in Thread] Current Thread [Next in Thread]