Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?


Failed to load latest commit information.
Latest commit message
Commit time


Supplemental evil-mode key-bindings to Emacs org-mode. This project is a continuation of by Edward Tjörnhammar. From version 1.3 it was taken over by Somelauw. See changelog for a history of changes.


  • normal, visual and insert mode bindings
  • key bindings organised in key themes
  • operators like > and < to work on headings
  • text objects
  • table support
  • calendar (date selection) support
  • agenda support


Full overview of bindings and configuration

Quick overview

gh, gj, gk, glnavigate between elements
vaeselect an element

Headings and items

M-retinsert heading
<tab>, g TABfold / unfold headings
M-h or <<promote a heading
M-l or >>demote a heading
M-kmove subtree up
M-jmove subtree down
M-S-h or <aRpromote a subtree
M-S-l or >aRdemote a subtree
vaRselect a subtree


(previous table cell
)next table cell
{beginning of table
}end of table
M-h / M-lmove table column left / right
M-k / M-jmove table column up / down
vaeselect table cell
vaEselect table row
varselect whole table


Evil keyEmacs keyexplanation
gHMove cursor to the top of window
gMMove cursor to the middle of window
gLMove cursor to the bottom of window
<tab>, S-<return><tab>go to the corresponding entry at point
g TAB<tab>go to the corresponding entry at point
<return><return>go to the Org mode file which contains the item at point
M-<return>LDisplay Org file and center around the item
<space><space>scroll up
<delete> or <backspace><delete> or <backspace>scroll down
j, kn, pnext, previous line
gj, gk, C-j, C-kN, Pnext, previous item
[, ]b, fprevious, next week
J, K-, +, S-down, S-updown, up priority
H, LS-left, S-rightmodify date to earlier, later
ttcycle TODO keywords
M-j, M-kM-down, M-updrag line forward, backward
C-S-h, C-S-lC-S-left, C-S-rightprevious, next keyword
uC-_, C-/undo
ddC-kdelete item
daaask and archive item
dA$archive item
ct:set tags
ceeset effort
cT;set timer
iiinsert entry in diary
azadd note
AAappend to agenda
**toggle all marks
%%mark regexp
MUremove all marks
xBexecute action on marks
grrrefresh agenda
gRgrefresh all agendas
ZQxexit agenda
ZZQquit agenda
gDvtweak display (deadlines, diary, follow/log-mode, entry text, grid, day/week/year
ZD#dim blocked tasks
sc, sr, se, st, s^<, =, _, /, ^filter by category, regexp, effort, tag, top headline
S|remove all filters
ss~filter/limit interactively
IIclock in
OOclock out
cgJjump to the currently clocked in task within the agenda
ccXcancel the current running clock
crRtoggle clocktable mode in an agenda buffer
..go to today’s date
gccpop up calendar
gCCpop up date converter
p>pop up date selector
ghHpop up holiday calendar
gmMpop up phases of the moon
gsSpop up sunrise/sunset times
gtTpop up tag list
+, -[, ]manipulate the query by adding a search term with positive or negative selection



Manual installation

mkdir -p ~/.emacs.d/plugins; git clone \
git:// ~/.emacs.d/plugins/evil-org-mode

Configuration emacs.el

(add-to-list 'load-path "~/.emacs.d/plugins/evil-org-mode")
(require 'evil-org)
(add-hook 'org-mode-hook 'evil-org-mode)
(evil-org-set-key-theme '(navigation insert textobjects additional calendar))
(require 'evil-org-agenda)

Or you can customize evil-org-key-theme and replace the last line by:


Installation by use-package

(use-package evil-org
  :ensure t
  :after org
  :hook (org-mode . (lambda () evil-org-mode))
  (require 'evil-org-agenda)

For a more elaborate setup, take a look at this example.

Common issues

In case you run Emacs in a terminal, you might find that TAB does not work as expected (being bound to evil-jump-forward instead of org-tab). You can add this to your configuration to get org-tab instead at the cost of losing C-i to jump.

(setq evil-want-C-i-jump nil)

See also


Gnu General Public License v3.0,