Somelauw/evil-org-mode

Supplemental evil-mode keybindings to emacs org-mode

Emacs Lisp

418

83 commits

updated Feb 20, 2024

See the code

README

#+TITLE: evil-org

[[https://melpa.org/#/evil-org][file:https://melpa.org/packages/evil-org-badge.svg]]
[[https://stable.melpa.org/#/evil-org][file:https://stable.melpa.org/packages/evil-org-badge.svg]]

Supplemental evil-mode key-bindings to Emacs org-mode.
This project is a continuation of
https://github.com/edwtjo/evil-org-mode/blob/master/evil-org.el by Edward Tjörnhammar.
From version 1.3 it was taken over by Somelauw.
See [[file:doc/changelog.org][changelog]] for a history of changes.

** Features
 - 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

** Keybindings

   [[file:doc/keythemes.org][Full overview of bindings and configuration]]

*** Quick overview

    |----------------+---------------------------|
    | key            | explanation               |
    |----------------+---------------------------|
    | gh, gj, gk, gl | navigate between elements |
    | vae            | select an element         |
    |----------------+---------------------------|

**** Headings and items

     |--------------+------------------------|
     | key          | explanation            |
     |--------------+------------------------|
     | M-ret        | insert heading         |
     | <tab>, g TAB | fold / unfold headings |
     | M-h or <<    | promote a heading      |
     | M-l or >>    | demote a heading       |
     | M-k          | move subtree up        |
     | M-j          | move subtree down      |
     | M-S-h or <aR | promote a subtree      |
     | M-S-l or >aR | demote a subtree       |
     | vaR          | select a subtree       |
     |--------------+------------------------|

**** Tables

     |-----------+--------------------------------|
     | key       | explanation                    |
     |-----------+--------------------------------|
     | (         | previous table cell            |
     | )         | next table cell                |
     | {         | beginning of table             |
     | }         | end of table                   |
     | M-h / M-l | move table column left / right |
     | M-k / M-j | move table column up / down    |
     | vae       | select table cell              |
     | vaE       | select table row               |
     | var       | select whole table             |
     |-----------+--------------------------------|

**** Agenda

     |-------------------------+-------------------------+-----------------------------------------------------------------------------------|
     | Evil key                | Emacs key               | explanation                                                                       |
     |-------------------------+-------------------------+-----------------------------------------------------------------------------------|
     | gH                      |                         | Move cursor to the top of window                                                  |
     | gM                      |                         | Move cursor to the middle of window                                               |
     | gL                      |                         | Move 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>              | L                       | Display Org file and center around the item                                       |
     | <space>                 | <space>                 | scroll up                                                                         |
     | <delete> or <backspace> | <delete> or <backspace> | scroll down                                                                       |
     | j, k                    | n, p                    | next, previous line                                                               |
     | gj, gk, C-j, C-k        | N, P                    | next, previous item                                                               |
     | [, ]                    | b, f                    | previous, next week                                                               |
     | J, K                    | -, +, S-down, S-up      | down, up priority                                                                 |
     | H, L                    | S-left, S-right         | modify date to earlier, later                                                     |
     | t                       | t                       | cycle TODO keywords                                                               |
     | M-j, M-k                | M-down, M-up            | drag line forward, backward                                                       |
     | C-S-h, C-S-l            | C-S-left, C-S-right     | previous, next keyword                                                            |
     | u                       | C-_, C-/                | undo                                                                              |
     | dd                      | C-k                     | delete item                                                                       |
     | da                      | a                       | ask and archive item                                                              |
     | dA                      | $                       | archive item                                                                      |
     | ct                      | :                       | set tags                                                                          |
     | ce                      | e                       | set effort                                                                        |
     | cT                      | ;                       | set timer                                                                         |
     | i                       | i                       | insert entry in diary                                                             |
     | a                       | z                       | add note                                                                          |
     | A                       | A                       | append to agenda                                                                  |
     | C                       | k                       | capture                                                                           |
     | m                       | m                       | mark                                                                              |
     | *                       | *                       | toggle all marks                                                                  |
     | %                       | %                       | mark regexp                                                                       |
     | M                       | U                       | remove all marks                                                                  |
     | x                       | B                       | execute action on marks                                                           |
     | gr                      | r                       | refresh agenda                                                                    |
     | gR                      | g                       | refresh all agendas                                                               |
     | ZQ                      | x                       | exit agenda                                                                       |
     | ZZ                      | Q                       | quit agenda                                                                       |
     | gD                      | v                       | tweak 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                       | \vert                   | remove all filters                                                                |
     | ss                      | ~                       | filter/limit interactively                                                        |
     | I                       | I                       | clock in                                                                          |
     | O                       | O                       | clock out                                                                         |
     | cg                      | J                       | jump to the currently clocked in task within the agenda                           |
     | cc                      | X                       | cancel the current running clock                                                  |
     | cr                      | R                       | toggle clocktable mode in an agenda buffer                                        |
     | .                       | .                       | go to today's date                                                                |
     | gc                      | c                       | pop up calendar                                                                   |
     | gC                      | C                       | pop up date converter                                                             |
     | p                       | >                       | pop up date selector                                                              |
     | gh                      | H                       | pop up holiday calendar                                                           |
     | gm                      | M                       | pop up phases of the moon                                                         |
     | gs                      | S                       | pop up sunrise/sunset times                                                       |
     | gt                      | T                       | pop up tag list                                                                   |
     | +, -                    | [, ]                    | manipulate the query by adding a search term with positive or negative selection  |
     |-------------------------+-------------------------+-----------------------------------------------------------------------------------|

** Requirements

   - org-mode, git://orgmode.org/org-mode.git
   - evil-mode, https://github.com/emacs-evil/evil

** Installation

*** Manual installation
    #+BEGIN_SRC sh
    mkdir -p ~/.emacs.d/plugins; git clone \
    git://github.com/somelauw/evil-org-mode.git ~/.emacs.d/plugins/evil-org-mode
    #+END_SRC

**** Configuration emacs.el

    #+BEGIN_SRC emacs-lisp
    (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)
    (evil-org-agenda-set-keys)
    #+END_SRC

    Or you can customize =evil-org-key-theme= and replace the last line by:
    #+BEGIN_SRC emacs-lisp
    (evil-org-set-key-theme)
    #+END_SRC

*** Installation by use-package
    #+BEGIN_SRC emacs-lisp
    (use-package evil-org
      :ensure t
      :after org
      :hook (org-mode . (lambda () evil-org-mode))
      :config
      (require 'evil-org-agenda)
      (evil-org-agenda-set-keys))
    #+END_SRC

    For a more elaborate setup, take a look at [[file:doc/example_config.el][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.

   #+BEGIN_SRC emacs-lisp
   (setq evil-want-C-i-jump nil)
   #+END_SRC

** See also

   - [[https://github.com/edwtjo/evil-org-mode][evil-org-mode by edwtjo]]
     Original org-mode plugin by edwtjo from which this project was forked

   - [[https://github.com/GuiltyDolphin/org-evil][org-evil by GuiltyDolphin]]
     Alternative integration of evil and org with different keybindings

   - https://github.com/abo-abo/worf
     Not an evil plugin, but provides vim-inspired key bindings

   - https://github.com/jceb/vim-orgmode
     Org mode plugin for vim

   - http://orgmode.org/
     The official org-mode website

   - [[http://orgmode.org/orgcard.pdf]]
     A handy cheat sheet, even if using this plugin

   - https://github.com/Somelauw/evil-markdown
     Similar project for markdown code

** License

 Gnu General Public License v3.0, http://www.gnu.org/copyleft/gpl.html

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

emacs
evil
org-mode

Contributors

Somelauw

26 commits

edwtjo

20 commits

Ambrevar

5 commits

crocket

4 commits

Somelauw/evil-org-mode

Supplemental evil-mode keybindings to emacs org-mode

Emacs Lisp

418

83 commits

updated Feb 20, 2024

See the code

README

#+TITLE: evil-org

[[https://melpa.org/#/evil-org][file:https://melpa.org/packages/evil-org-badge.svg]]
[[https://stable.melpa.org/#/evil-org][file:https://stable.melpa.org/packages/evil-org-badge.svg]]

Supplemental evil-mode key-bindings to Emacs org-mode.
This project is a continuation of
https://github.com/edwtjo/evil-org-mode/blob/master/evil-org.el by Edward Tjörnhammar.
From version 1.3 it was taken over by Somelauw.
See [[file:doc/changelog.org][changelog]] for a history of changes.

** Features
 - 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

** Keybindings

   [[file:doc/keythemes.org][Full overview of bindings and configuration]]

*** Quick overview

    |----------------+---------------------------|
    | key            | explanation               |
    |----------------+---------------------------|
    | gh, gj, gk, gl | navigate between elements |
    | vae            | select an element         |
    |----------------+---------------------------|

**** Headings and items

     |--------------+------------------------|
     | key          | explanation            |
     |--------------+------------------------|
     | M-ret        | insert heading         |
     | <tab>, g TAB | fold / unfold headings |
     | M-h or <<    | promote a heading      |
     | M-l or >>    | demote a heading       |
     | M-k          | move subtree up        |
     | M-j          | move subtree down      |
     | M-S-h or <aR | promote a subtree      |
     | M-S-l or >aR | demote a subtree       |
     | vaR          | select a subtree       |
     |--------------+------------------------|

**** Tables

     |-----------+--------------------------------|
     | key       | explanation                    |
     |-----------+--------------------------------|
     | (         | previous table cell            |
     | )         | next table cell                |
     | {         | beginning of table             |
     | }         | end of table                   |
     | M-h / M-l | move table column left / right |
     | M-k / M-j | move table column up / down    |
     | vae       | select table cell              |
     | vaE       | select table row               |
     | var       | select whole table             |
     |-----------+--------------------------------|

**** Agenda

     |-------------------------+-------------------------+-----------------------------------------------------------------------------------|
     | Evil key                | Emacs key               | explanation                                                                       |
     |-------------------------+-------------------------+-----------------------------------------------------------------------------------|
     | gH                      |                         | Move cursor to the top of window                                                  |
     | gM                      |                         | Move cursor to the middle of window                                               |
     | gL                      |                         | Move 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>              | L                       | Display Org file and center around the item                                       |
     | <space>                 | <space>                 | scroll up                                                                         |
     | <delete> or <backspace> | <delete> or <backspace> | scroll down                                                                       |
     | j, k                    | n, p                    | next, previous line                                                               |
     | gj, gk, C-j, C-k        | N, P                    | next, previous item                                                               |
     | [, ]                    | b, f                    | previous, next week                                                               |
     | J, K                    | -, +, S-down, S-up      | down, up priority                                                                 |
     | H, L                    | S-left, S-right         | modify date to earlier, later                                                     |
     | t                       | t                       | cycle TODO keywords                                                               |
     | M-j, M-k                | M-down, M-up            | drag line forward, backward                                                       |
     | C-S-h, C-S-l            | C-S-left, C-S-right     | previous, next keyword                                                            |
     | u                       | C-_, C-/                | undo                                                                              |
     | dd                      | C-k                     | delete item                                                                       |
     | da                      | a                       | ask and archive item                                                              |
     | dA                      | $                       | archive item                                                                      |
     | ct                      | :                       | set tags                                                                          |
     | ce                      | e                       | set effort                                                                        |
     | cT                      | ;                       | set timer                                                                         |
     | i                       | i                       | insert entry in diary                                                             |
     | a                       | z                       | add note                                                                          |
     | A                       | A                       | append to agenda                                                                  |
     | C                       | k                       | capture                                                                           |
     | m                       | m                       | mark                                                                              |
     | *                       | *                       | toggle all marks                                                                  |
     | %                       | %                       | mark regexp                                                                       |
     | M                       | U                       | remove all marks                                                                  |
     | x                       | B                       | execute action on marks                                                           |
     | gr                      | r                       | refresh agenda                                                                    |
     | gR                      | g                       | refresh all agendas                                                               |
     | ZQ                      | x                       | exit agenda                                                                       |
     | ZZ                      | Q                       | quit agenda                                                                       |
     | gD                      | v                       | tweak 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                       | \vert                   | remove all filters                                                                |
     | ss                      | ~                       | filter/limit interactively                                                        |
     | I                       | I                       | clock in                                                                          |
     | O                       | O                       | clock out                                                                         |
     | cg                      | J                       | jump to the currently clocked in task within the agenda                           |
     | cc                      | X                       | cancel the current running clock                                                  |
     | cr                      | R                       | toggle clocktable mode in an agenda buffer                                        |
     | .                       | .                       | go to today's date                                                                |
     | gc                      | c                       | pop up calendar                                                                   |
     | gC                      | C                       | pop up date converter                                                             |
     | p                       | >                       | pop up date selector                                                              |
     | gh                      | H                       | pop up holiday calendar                                                           |
     | gm                      | M                       | pop up phases of the moon                                                         |
     | gs                      | S                       | pop up sunrise/sunset times                                                       |
     | gt                      | T                       | pop up tag list                                                                   |
     | +, -                    | [, ]                    | manipulate the query by adding a search term with positive or negative selection  |
     |-------------------------+-------------------------+-----------------------------------------------------------------------------------|

** Requirements

   - org-mode, git://orgmode.org/org-mode.git
   - evil-mode, https://github.com/emacs-evil/evil

** Installation

*** Manual installation
    #+BEGIN_SRC sh
    mkdir -p ~/.emacs.d/plugins; git clone \
    git://github.com/somelauw/evil-org-mode.git ~/.emacs.d/plugins/evil-org-mode
    #+END_SRC

**** Configuration emacs.el

    #+BEGIN_SRC emacs-lisp
    (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)
    (evil-org-agenda-set-keys)
    #+END_SRC

    Or you can customize =evil-org-key-theme= and replace the last line by:
    #+BEGIN_SRC emacs-lisp
    (evil-org-set-key-theme)
    #+END_SRC

*** Installation by use-package
    #+BEGIN_SRC emacs-lisp
    (use-package evil-org
      :ensure t
      :after org
      :hook (org-mode . (lambda () evil-org-mode))
      :config
      (require 'evil-org-agenda)
      (evil-org-agenda-set-keys))
    #+END_SRC

    For a more elaborate setup, take a look at [[file:doc/example_config.el][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.

   #+BEGIN_SRC emacs-lisp
   (setq evil-want-C-i-jump nil)
   #+END_SRC

** See also

   - [[https://github.com/edwtjo/evil-org-mode][evil-org-mode by edwtjo]]
     Original org-mode plugin by edwtjo from which this project was forked

   - [[https://github.com/GuiltyDolphin/org-evil][org-evil by GuiltyDolphin]]
     Alternative integration of evil and org with different keybindings

   - https://github.com/abo-abo/worf
     Not an evil plugin, but provides vim-inspired key bindings

   - https://github.com/jceb/vim-orgmode
     Org mode plugin for vim

   - http://orgmode.org/
     The official org-mode website

   - [[http://orgmode.org/orgcard.pdf]]
     A handy cheat sheet, even if using this plugin

   - https://github.com/Somelauw/evil-markdown
     Similar project for markdown code

** License

 Gnu General Public License v3.0, http://www.gnu.org/copyleft/gpl.html

Not written in Markdown, so it's shown here as plain text — view it formatted on GitHub.

emacs
evil
org-mode

Contributors

Somelauw

26 commits

edwtjo

20 commits

Ambrevar

5 commits

crocket

4 commits

Languages

Emacs Lisp

100.0%