Permalink
1e64669 Jan 11, 2018
0 contributors

Users who have contributed to this file

202 lines (163 sloc) 10.5 KB

Key themes

The config is set up in key themes.

To enable all bindings use:

(evil-org-set-key-theme '(textobjects insert navigation additional shift todo heading))

Basic

These keys are always enabled

keyfunctionexplanation
TABorg-cyclechange folding level of current heading
0evil-org-beginning-of-linelike 0 but can be special*
$evil-org-end-of-linelike $ but can be special*
Ievil-org-insert-linelike I but can be special*
Aevil-org-append-linelike A but can be special*
oevil-org-open-belowlike o but continue tables and items*
Oevil-org-open-abovelike O but continue tables and items*
devil-org-deletelike d but keep tags aligned and fix lists
xevil-org-delete-charlike x but keep tables and tags aligned
Xevil-org-delete-previous-charlike X but keep tables and tags aligned
(org-forward-sentencenext cell in table
)org-backward-sentenceprevious cell in table
{org-backward-paragraphbeginning of table
}org-forward-paragraphend of table
  • Set org-special-ctrl-a/e to t to make org-beginning-of-line and org-end-of-line ignore leading stars or tags on headings. Repeat to toggle. By default it’s set to nil.
  • evil-org-insert-line and evil-org-append-line also respect the setting of org-special-ctrl-a/e.
  • The cases in which o and O should behave special can be controlled using evil-org-special-o/O. By default it’s set to ~’(table-row item)~.

Operators

Context dependent dwim operators for:

  • promoting/demoting on headings and items
  • moving table columns
  • changing indent in other contexts (when editing source code)
keyfunctionexplanation
<evil-org-<Promote all headings in marked area
>evil-org-<Demote all headings in marked area

Variable evil-org-retain-visual-state-on-shift controls whether the selection should be restored after promoting / indenting, which is helpful if you want to promote / indent multiple times. By default this variable is set to nil.

Examples:

  • >> to promote a heading
  • >ar to promote a tree
  • <( to swap a table column with the one on the left
  • vie2> to move a table column two places to the right

If you want < and > to promote / demote headings and items on a single press, add the following to your org setup:

(evil-define-key 'normal evil-org-mode-map
                 (kbd ">") 'org-meta-right
                 (kbd "<") 'org-meta-left)

Or enable the additional key binding theme and use M-h and M-l.

Return

Experimental function bound to RET. Disabled by default. If enabled, it’s active in insert and emacs state.

Depending on context, it performs one of the following actions:

  • When on an empty item or table row, abort or split the item list or table.
  • When on a non-empty item or table row, continue the item list or table.
  • Otherwise, insert a newline and indent.

This makes RET more consistent with evil-org-open-above/below (which are bound to o and O by default).

keyfunction
RETevil-org-return

Based on the following earlier work:

Navigation

If you don’t want to use h/j/k/l,= you can customize =evil-org-movement-bindings.

keyfunctionexplanation
ghorg-element-upparent of element
gjorg-forward-elementnext element
gkorg-backward-elementprevious element
glorg-down-elementfirst subelement
gHevil-org-toptop-level heading

Text objects

keyfunctionexamples
ae / ieevil-org-an/inner-objectlink, markup, table cell
aE / iEevil-org-an/inner-elementparagraph, code block, table row
ar / irevil-org-an/inner-greater-elementitem list, table
aR / iRevil-org-an/inner-subtreesubtree starting with a header
  • ae/ie select the smallest object or element at point. Can be repeated to select adjacent objects / elements.
  • aE/iE select the smallest element at point. Elements build up the structure of the document, so there is always an element at any point. Can be repeated to select adjacent elements.
  • ar/ir select smallest element that is a container of other elements. Can be repeated to select greater elements

Examples:

  • vae to select a paragraph
  • daR to delete a subtree
  • yiR to yank the contents of a subtree

Calendar

Disabled by default. When enabled, these bindings are available in org-calendar in both Evil and Emacs mode.

evil-org keyemacs keyexplanation
M-h / M-lS-left / S-rightnext / previous day
M-j / M-kS-down / S-upnext / previous week
M-S-h / M-S-lM-S-left / M-S-rightnext / previous month
M-S-j / M-S-kM-S-down / M-S-upnext / previous year
C-f / C-bM-v / C-vscroll down /up

Additional

If you don’t want to use hjkl, you can customize evil-org-movement-bindings. If you want to use these bindings even in insert mode, you can customize evil-org-use-additional-insert.

keyfunctionOn headingsOn tables
M-horg-metaleftpromote headingmove column left
M-lorg-metarightdemote headingmove column right
M-korg-metaupmove subtree upmove column up
M-jorg-metadownmove subtree downmove column down
M-Horg-shiftmetaleftpromote subtreedelete column
M-Lorg-shiftmetarightdemote subtreeinsert column
M-Korg-shiftmetaupmove heading updelete row
M-Jorg-shiftmetadownmove heading downinsert row

Shift

Disabled by default. If you don’t want to use hjkl, you can customize evil-org-movement-bindings.

keyfunctionexplanation
Horg-shiftleftprevious todo item
Lorg-shiftrightnext todo item
Jorg-shiftdowndecrease priority
Korg-shiftupincrease priority

When point is not at a heading or item, these keys fall back on their binding in non-org modes. For example, you can still use J to join lines when not at a heading. This behaviour can be configured using evil-org-want-hybrid-shift. By default this option is set to t.

Todo

Disabled by default.

keyfunction
torg-todo
Torg-insert-todo-heading
M-torg-insert-todo-subheading

Heading

Disabled by default.

keyfunction
Oorg-insert-heading
M-oorg-insert-subheading

Commands without default binding

These functions don’t have any bindings by default and aren’t well-maintained. You can bind them under C-c or another leader key.

functionexplanation
evil-org-open-linksopens links in selection
evil-org-open-incognitoopen link at point in incognito window

evil-org-open-links opens all links in a selection. Use RET to open a single link. evil-org-open-incognito tries to open a link in a private window.