Keys in Vim
The Vim plugin binds the same keys as the Neovim plugin: when the server
starts, it announces its commands with their default keys (org-lsp
manifest prints them), and the plugin binds those of the vim preset,
which are nvim-orgmode's defaults. Keys for Org files, the agenda, the date
prompt's calendar, column view and capture buffers are local to those
buffers; the keys listed under Anywhere are global.
g? in an Org file or the agenda shows the keys set there, yours included,
in a popup. vim.org says how to install and set up the plugin.
The keys#
Anywhere#
| Keys | Command | What it does |
|---|---|---|
<Leader>oa | org.agenda.dispatch | Agenda commands |
<Leader>oxj | org.clock.goto | Go to the clocked entry |
<Leader>oc | org.capture | Capture |
<Leader>jj | org.journal.new.entry | Journal: new entry |
In Org files#
| Keys | Command | What it does |
|---|---|---|
<Leader>oxi | org.clock.in | Clock in |
<Leader>oxx | org.clock.in.last | Clock in the last clocked task |
<Leader>oxz | org.clock.resolve | Resolve open clocks |
<Leader>oxo | org.clock.out | Clock out |
<Leader>oxq | org.clock.cancel | Cancel the clock |
<Leader>oxd | org.clock.display | Show the time clocked under each headline |
<Leader>oxr | org.clock.report | Insert or update a clock table |
<Leader>oxu | org.dblock.update | Update the dynamic block |
<Leader>oix | org.dblock.insert | Insert a dynamic block |
<Leader>oxa | org.attach | Attachments of the entry |
cit | org.todo | Change the TODO state |
ciT | org.todo.previous | Cycle TODO state backward |
ciR | org.priority.up | Raise the priority |
cir | org.priority.down | Lower the priority |
<Leader>o, | org.priority | Set the priority |
<Leader>oxp | org.property.set | Set a property of the entry |
<Leader>oxe | org.effort.set | Set the effort of the entry |
<Leader>oxE | org.effort.increase | Set the effort to the next allowed value |
<Leader>oic | org.cite.insert | Insert a citation, or edit the one at the cursor |
<Leader>oiC | org.cite.insert.prefix | Delete the citation or reference at the cursor, or insert one with a style |
<Leader>ot | org.tags.set | Set the tags of the headline |
<C-Space> | org.checkbox.toggle | Toggle the checkbox |
<CR> ¹ (insert mode) | org.return | New line, as Org's RET makes it |
<S-CR> ¹ (insert mode) | org.return.item | New line; on a list item, the next item |
<Leader><CR> | org.meta.return | New heading, item or table row |
<Leader>oiT | org.insert.todo.heading | New TODO heading, or item with a checkbox |
<Leader>oih | org.insert.heading.after | New heading after the subtree |
<Leader>oit | org.insert.todo.heading.after | New TODO heading after the subtree |
<Leader>oiI | org.inlinetask.insert | Insert an inline task |
<< ¹ | org.meta.left | Promote the heading; outdent the item; move the table column left |
>> ¹ | org.meta.right | Demote the heading; indent the item, the drawer or the block; move the table column right |
<s | org.shiftmeta.left | Promote the subtree; outdent the item with its children; delete the table column |
>s | org.shiftmeta.right | Demote the subtree; indent the item with its children; insert a table column |
<Leader>oK | org.meta.up | Move the subtree, the item or the table row up |
<Leader>oJ | org.meta.down | Move the subtree, the item or the table row down |
<Leader>oTd | org.shiftmeta.up | Delete the table row |
<Leader>oTO | org.shiftmeta.down | Insert a table row above |
<Leader>oTo | org.table.insert.row.below | Insert a table row below |
<Leader>o- | org.table.hline | Insert a rule below the table row |
<Leader>o<CR> | org.table.hline.move | Insert a rule below the table row and go below it |
<Leader>o<Space> | org.table.blank.field | Blank the table field |
<Leader>o^ | org.sort | Sort the entries, the items or the table rows |
<Leader>o/ | org.sparse.tree | Show a sparse tree |
<Leader>oR | org.reveal | Show the context of the cursor |
<Leader>osd | org.cut.subtree | Cut the subtree |
<Leader>osy | org.copy.subtree | Copy the subtree |
<Leader>osp | org.paste.subtree | Paste the subtree |
<Leader>or | org.refile | Refile the entry |
<Leader>oy | org.refile.copy | Copy the entry to a refile target |
<Leader>ona | org.add.note | Add a note to the entry |
<Leader>obt | org.babel.tangle | Tangle the file's code blocks |
<Leader>obd | org.babel.detangle | Put the code of a tangled file back into its blocks |
<Leader>obe | org.babel.execute | Evaluate the code block or call at the cursor through Emacs |
<Leader>obb | org.babel.execute.buffer | Evaluate the file's code blocks through Emacs |
<Leader>obs | org.babel.execute.subtree | Evaluate the subtree's code blocks through Emacs |
<Leader>obk | org.babel.remove_result | Remove the results of the code block at the cursor |
} | org.heading.next | Move to the next heading |
{ | org.heading.previous | Move to the previous heading |
]] | org.heading.forward | Move to the next heading of the same level |
[[ | org.heading.backward | Move to the previous heading of the same level |
g{ | org.heading.up | Move to the parent heading |
]l | org.link.next | Move to the next link |
[l | org.link.previous | Move to the previous link |
<Leader>oj | org.goto | Go to a heading of the file |
<Leader>of | org.footnote.action | Make a footnote, or go between a footnote and its definition |
<Leader>oF | org.footnote.menu | Sort, renumber, normalize or delete footnotes |
<Leader>o; | org.toggle.comment | Toggle the COMMENT keyword of the heading |
<Leader>oie | org.emphasize | Insert emphasis markers |
<Leader>oib | org.structure.template | Insert a block (structure template) |
<Leader>oiD | org.drawer.insert | Insert a drawer |
<Leader>osc | org.subtree.clone | Clone the subtree, shifting its dates |
<Leader>oD | org.table.copy.down | Copy the field down to the next row |
<Leader>o+ | org.table.sum | Sum the numbers of the table column |
<Leader>o? | org.table.field.info | Show the references of the table field |
<Leader>oi<Bar> | org.table.create | Insert an empty table |
<Leader>opg | org.plot.gnuplot | Plot the table with gnuplot |
<Leader>opa | org.table.ascii.plot | Draw the column at the cursor as bars |
<Leader>obn | org.babel.next | Move to the next code block |
<Leader>obp | org.babel.previous | Move to the previous code block |
<Leader>obg | org.babel.goto | Go to a named code block |
<Leader>obi | org.babel.lob.ingest | Add the file's named code blocks to the Library of Babel |
<Leader>o' | org.edit.special | Edit the block in a file of its own |
<Leader>ons | org.narrow.subtree | Narrow to the subtree: it in a file of its own |
<Leader>onb | org.narrow.block | Narrow to the block: it in a file of its own |
<Leader>onw | org.narrow.widen | Widen: the narrowed file written back and closed |
<Leader>oxb | org.tree.indirect | Show the subtree in a file of its own |
<Leader>o` | org.table.edit.field | Edit the table field in a file of its own |
<Leader>oxc | org.columns | Column view |
<Leader>oxv | org.link.preview | Preview the images of links |
<Leader>oxl | org.latex.preview | Preview LaTeX fragments |
<Leader>ox0 | org.timer.start | Start the relative timer |
<Leader>ox. | org.timer.insert | Insert the timer's value |
<Leader>ox- | org.timer.item | Insert a list item with the timer's value |
<Leader>ox, | org.timer.pause | Pause or continue the timer |
<Leader>ox_ | org.timer.stop | Stop the timer |
<Leader>ox; | org.timer.set | Set a countdown timer |
<Leader>oe | org.export.dispatch | Export the file through Emacs |
<Leader>o<Tab> | org.table.toggle.column.width | Shrink or expand the table column |
<Leader>o* | org.table.recalculate | Recalculate the table |
<Leader>o{ | org.table.formula.debugger | Turn the formula debugger on or off |
<Leader>oo | org.open | Open the link or thing at the cursor |
<Leader>ols | org.link.store | Store a link to the place at the cursor |
<Leader>oli | org.link.insert | Insert a link, or edit the one at the cursor |
<Leader>o$ | org.archive.subtree | Archive the subtree |
<Leader>oxA | org.archive.sibling | Archive the subtree under its Archive sibling |
<Leader>oA | org.archive.tag | Toggle the ARCHIVE tag |
<Leader>nf | org.roam.node.find | Roam: find a node |
<Leader>ni | org.roam.node.insert | Roam: insert a link to a node |
<Leader>nc | org.roam.capture | Roam: capture to a node |
<Leader>ndn | org.roam.dailies.capture.today | Roam: capture to today's daily note |
<Leader>ndd | org.roam.dailies.goto.today | Roam: go to today's daily note |
<Leader>ndt | org.roam.dailies.goto.tomorrow | Roam: go to tomorrow's daily note |
<Leader>ndy | org.roam.dailies.goto.yesterday | Roam: go to yesterday's daily note |
<Leader>ndv | org.roam.dailies.capture.date | Roam: capture to the daily note of a date |
<Leader>ndc | org.roam.dailies.goto.date | Roam: go to the daily note of a date |
<Leader>ndf | org.roam.dailies.goto.next | Roam: go to the next daily note |
<Leader>ndb | org.roam.dailies.goto.previous | Roam: go to the previous daily note |
<Leader>nd. | org.roam.dailies.find.directory | Roam: open the directory of the daily notes |
<Leader>nl | org.roam.buffer.toggle | Roam: show or hide the org-roam buffer |
<Leader>jf | org.journal.next.entry | Journal: next entry |
<Leader>jb | org.journal.previous.entry | Journal: previous entry |
<Leader>js | org.journal.search | Journal: search between two dates |
<C-a> ¹ | org.timestamp.up | Increase the part of the timestamp at the cursor |
<C-x> ¹ | org.timestamp.down | Decrease the part of the timestamp at the cursor |
<S-Up> ¹ | org.date.later | Move the date one day later |
<S-Down> ¹ | org.date.earlier | Move the date one day earlier |
<S-Left> ¹ | org.shift.left | Move the date a day earlier, or cycle the TODO state or the list's bullets backward |
<S-Right> ¹ | org.shift.right | Move the date a day later, or cycle the TODO state or the list's bullets forward |
<Leader>ois | org.schedule | Schedule the entry |
<Leader>oid | org.deadline | Set the deadline of the entry |
<Leader>oi. | org.timestamp.insert | Insert or change a timestamp |
<Leader>oi! | org.timestamp.insert.inactive | Insert or change an inactive timestamp |
cid | org.timestamp.change | Change the timestamp at the cursor |
<Leader>o> | org.goto.calendar | Show the calendar at the date of the line |
In a capture buffer#
| Keys | Command | What it does |
|---|---|---|
<C-c> | org.capture.finish | Capture: finish |
<Leader>ok | org.capture.abort | Capture: abort |
<Leader>or | org.capture.refile | Capture: refile the entry |
In the agenda#
| Keys | Command | What it does |
|---|---|---|
f | org.agenda.later | Agenda: go forward in time |
b | org.agenda.earlier | Agenda: go backward in time |
. | org.agenda.today | Agenda: go to today |
[ | org.agenda.query.add | Agenda: search for another word, or show inactive timestamps |
] | org.agenda.query.subtract | Agenda: search without a word, or show inactive timestamps |
{ | org.agenda.query.add.regexp | Agenda: search for another regexp, or show inactive timestamps |
} | org.agenda.query.subtract.regexp | Agenda: search without a regexp, or show inactive timestamps |
J | org.agenda.goto.date | Agenda: go to a date |
vd | org.agenda.day | Agenda: day view |
vw | org.agenda.week | Agenda: week view |
vt | org.agenda.fortnight | Agenda: fortnight view |
vm | org.agenda.month | Agenda: month view |
vy | org.agenda.year | Agenda: year view |
r | org.agenda.redo | Agenda: rebuild |
<CR> | org.agenda.goto | Agenda: go to the entry |
<Tab> | org.agenda.goto.other | Agenda: go to the entry in another window |
s, <C-x><C-s> | org.agenda.save | Save all Org files |
vl | org.agenda.log | Agenda: log mode, what was closed and clocked |
<C-x><C-w> | org.agenda.write | Agenda: write it to a file |
<C-c><C-x><C-c> | org.agenda.columns | Agenda: column view |
R, vR | org.agenda.clockreport | Agenda: the clock report |
E, vE | org.agenda.entry.text | Agenda: entry text mode, some text of each entry under its line |
F | org.agenda.follow | Agenda: follow mode, the cursor's entry in another window |
m | org.agenda.bulk.mark | Agenda: mark the entry for a bulk action |
u | org.agenda.bulk.unmark | Agenda: unmark the entry |
U | org.agenda.bulk.unmark.all | Agenda: unmark all entries |
<M-m> | org.agenda.bulk.toggle | Agenda: toggle the mark of the entry |
* | org.agenda.bulk.mark.all | Agenda: mark all entries |
<M-*> | org.agenda.bulk.toggle.all | Agenda: toggle the marks of all entries |
% | org.agenda.bulk.mark.regexp | Agenda: mark the entries matching a regexp |
B | org.agenda.bulk.action | Agenda: an action on the marked entries |
/ | org.agenda.filter | Agenda: filter by tags, categories, effort and regexps |
\ | org.agenda.filter.tag | Agenda: filter by tag |
< | org.agenda.filter.category | Agenda: filter by the line's category |
= | org.agenda.filter.regexp | Agenda: filter by a regexp |
_ | org.agenda.filter.effort | Agenda: filter by effort |
^ | org.agenda.filter.top.headline | Agenda: filter by the line's top headline |
¦ | org.agenda.filter.remove | Agenda: remove all filters |
va | org.agenda.archives | Agenda: include archived trees |
v[ | org.agenda.inactive | Agenda: show inactive timestamps once |
vA | org.agenda.archives.files | Agenda: include archived trees and archive files |
I, <Leader>oxi | org.clock.in | Clock in |
O, <Leader>oxo | org.clock.out | Clock out |
X, <Leader>oxq | org.clock.cancel | Cancel the clock |
t | org.todo | Change the TODO state |
<C-S-Right> | org.todo.nextset | Switch to the next TODO keyword set |
<C-S-Left> | org.todo.previousset | Switch to the previous TODO keyword set |
+, <S-Up> | org.priority.up | Raise the priority |
-, <S-Down> | org.priority.down | Lower the priority |
,, <Leader>o, | org.priority | Set the priority |
<C-c><C-x>p, <Leader>oxp | org.property.set | Set a property of the entry |
e, <Leader>oxe | org.effort.set | Set the effort of the entry |
<C-c><C-q>, <Leader>ot | org.tags.set | Set the tags of the headline |
<C-c><C-w>, <Leader>or | org.refile | Refile the entry |
z, <Leader>ona | org.add.note | Add a note to the entry |
<C-c><C-o>, <Leader>oo | org.open | Open the link or thing at the cursor |
<C-c>l, <Leader>ols | org.link.store | Store a link to the place at the cursor |
<C-c><C-x><C-s>, <C-c>$, <Leader>o$ | org.archive.subtree | Archive the subtree |
<C-c><C-x>A, <Leader>oxA | org.archive.sibling | Archive the subtree under its Archive sibling |
<C-c><C-x>a, <Leader>oA | org.archive.tag | Toggle the ARCHIVE tag |
<C-c><C-x><C-a> | org.archive.default | Archive with the default command |
a | org.archive.confirm | Archive with the default command, once confirmed |
<S-Right> | org.date.later | Move the date one day later |
<S-Left> | org.date.earlier | Move the date one day earlier |
<C-c><C-s>, <Leader>ois | org.schedule | Schedule the entry |
<C-c><C-d>, <Leader>oid | org.deadline | Set the deadline of the entry |
¦ stands for |, which an Org table cannot hold.
In the date prompt#
| Keys | Command | What it does |
|---|---|---|
<Leader>jn | org.journal.new.date.entry | Journal: new entry for a date |
] | org.journal.next.entry | Journal: next entry |
[ | org.journal.previous.entry | Journal: previous entry |
<Leader>jsf | org.journal.search.forever | Journal: search every entry |
<Leader>jsF | org.journal.search.future | Journal: search the entries to come |
<Leader>jsw | org.journal.search.calendar.week | Journal: search the calendar's week |
<Leader>jsm | org.journal.search.calendar.month | Journal: search the calendar's month |
<Leader>jsy | org.journal.search.calendar.year | Journal: search the calendar's year |
<Leader>jr | org.journal.read.entry | Journal: the entry of the calendar's day |
<Leader>jd | org.journal.display.entry | Journal: show the entry of the calendar's day |
<Leader>jm | org.journal.mark.entries | Journal: mark the days with an entry in the calendar |
l, <S-Right> | org.calendar.day.later | Date prompt: one day later |
h, <S-Left> | org.calendar.day.earlier | Date prompt: one day earlier |
j, <S-Down> | org.calendar.week.later | Date prompt: one week later |
k, <S-Up> | org.calendar.week.earlier | Date prompt: one week earlier |
<M-S-Right> | org.calendar.month.later | Date prompt: one month later |
<M-S-Left> | org.calendar.month.earlier | Date prompt: one month earlier |
<M-S-Down> | org.calendar.year.later | Date prompt: one year later |
<M-S-Up> | org.calendar.year.earlier | Date prompt: one year earlier |
> | org.calendar.scroll.later | Date prompt: show the next months |
< | org.calendar.scroll.earlier | Date prompt: show the previous months |
. | org.calendar.today | Date prompt: go to today |
<CR> | org.calendar.select | Date prompt: take the day at the cursor |
i | org.calendar.type | Date prompt: type the date |
t | org.calendar.time | Date prompt: pick the time, or go back to the day |
q, <Esc> | org.calendar.cancel | Date prompt: cancel |
In column view#
| Keys | Command | What it does |
|---|---|---|
q | org.columns.quit | Column view: quit |
r | org.columns.redo | Column view: recompute |
e | org.columns.edit | Column view: edit the value |
n, <S-Right> | org.columns.next | Column view: the next allowed value |
p, <S-Left> | org.columns.previous | Column view: the previous allowed value |
v | org.columns.show | Column view: show the value |
a | org.columns.allowed | Column view: edit the allowed values |
t | org.columns.todo | Column view: change the TODO state |
<CR> | org.columns.toggle | Column view: toggle a checkbox, or quit |
<M-Left> | org.columns.move.left | Column view: move the column left |
<M-Right> | org.columns.move.right | Column view: move the column right |
<M-S-Left> | org.columns.delete | Column view: delete the column |
< | org.columns.narrow | Column view: make the column narrower |
> | org.columns.widen | Column view: make the column wider |
<M-Up> | org.columns.row.up | Column view: move the entry up |
<M-Down> | org.columns.row.down | Column view: move the entry down |
Without a default key#
| Command | What it does |
|---|---|
org.agenda.list | Agenda for the current week or day |
org.agenda.todos | List of all TODO entries |
org.agenda.habits | Agenda: show or hide habits |
org.agenda.appt | Add today's appointments from the agenda files |
org.num.mode | Number the headlines, or stop numbering them |
org.indent.mode | Indent the text by the level of its headline, or stop indenting it |
org.custom.properties.toggle | Hide the properties of org_custom_properties, or show them again |
org.version | Show the version of the server |
org.todo.yesterday | Change the TODO state as if it were yesterday |
org.todo.next | Cycle TODO state forward |
org.property.delete | Delete a property of the entry |
org.property.delete.globally | Delete a property from every entry of the file |
org.ordered.toggle | Toggle whether subtasks must be done in order (ORDERED) |
org.bibtex.export | BibTeX: export the entries of the file to a .bib file |
org.bibtex.copy | BibTeX: copy the entry at the cursor as BibTeX |
org.bibtex.create | BibTeX: new entry, its fields asked for |
org.bibtex.create.here | BibTeX: make the entry at the cursor a BibTeX entry |
org.bibtex.check | BibTeX: ask for the fields the entry at the cursor lacks |
org.bibtex.check.all | BibTeX: ask for the fields every entry lacks |
org.bibtex.yank | BibTeX: paste a BibTeX entry as a heading |
org.bibtex.import | BibTeX: import the entries of a BibTeX file as headings |
org.ctags.create | Ctags: make the TAGS file of the file's directory |
org.ctags.find | Ctags: go to a topic, or make it |
org.inlinetask.insert.nostate | Insert an inline task without its default TODO state |
org.levels.odd | Convert the file to odd levels only, once confirmed |
org.levels.oddeven | Convert the file from odd levels to odd and even ones, once confirmed |
org.open.line | Open a line, or in a table insert a row |
org.outline.path | Show the outline path of the entry at the cursor |
org.table.next.field | Go to the next table field, making a row after the last |
org.table.previous.field | Go to the previous table field |
org.table.hline.above | Insert a rule above the table row |
org.reveal.siblings | Show the context of the cursor, each level with its children |
org.reveal.tree | Show the whole tree of the cursor's parent |
org.yank | Yank, a subtree at its level |
org.refile.goto | Go to a refile target |
org.refile.goto.last | Go to where the last refile put its entry |
org.beginning.of.line | Move to the start of the headline's title |
org.end.of.line | Move to the end of the headline's title |
org.kill.line | Kill the headline's text to the tags, or the tags |
org.toggle.item | Turn the line into an item, or the item into a line |
org.toggle.heading | Turn the line into a heading, or the heading into a line |
org.table.import | Import a file as a table |
org.table.export | Export the table to a file |
org.block.next | Move to the next block |
org.block.previous | Move to the previous block |
org.crypt.encrypt | Encrypt the entry |
org.crypt.decrypt | Decrypt the entry |
org.crypt.encrypt.all | Encrypt the entries tagged crypt |
org.crypt.decrypt.all | Decrypt the encrypted entries |
org.table.recalculate.line | Recalculate the table's current line |
org.table.iterate | Recalculate the table until it does not change |
org.link.insert.last | Insert the last stored link |
org.link.insert.all | Insert all stored links |
org.id.create | Create an ID for the entry |
org.archive.done | Archive the subtrees without open TODO items |
org.archive.tag.done | Tag the subtrees without open TODO items as archived |
org.roam.node.random | Roam: visit a random node |
org.roam.dailies.capture.tomorrow | Roam: capture to tomorrow's daily note |
org.roam.dailies.capture.yesterday | Roam: capture to yesterday's daily note |
org.roam.buffer.dedicated | Roam: show the org-roam buffer of a node |
org.roam.buffer.refresh | Roam: refresh the org-roam buffer |
org.roam.alias.add | Roam: add an alias |
org.roam.alias.remove | Roam: remove an alias |
org.roam.tag.add | Roam: add tags |
org.roam.tag.remove | Roam: remove tags |
org.roam.ref.add | Roam: add a reference |
org.roam.ref.remove | Roam: remove a reference |
org.roam.ref.find | Roam: find a node by a reference |
org.roam.promote | Roam: make the file's one top headline the file's node |
org.roam.demote | Roam: make the file's node a headline of its own |
org.roam.refile | Roam: refile to a node |
org.roam.extract | Roam: extract the subtree to a file of its own |
org.roam.graph | Roam: show the graph of the nodes |
org.journal.new.scheduled.entry | Journal: new entry for a day to come |
org.journal.open.current | Journal: open the current file |
org.journal.search.future.scheduled | Journal: the TODO entries to come |
org.journal.schedule.view | Journal: the entries to come with a date |
org.journal.reschedule | Journal: move the entry to come to another day |
org.date.later.hours | Agenda: move the time one hour later |
org.date.earlier.hours | Agenda: move the time one hour earlier |
org.date.later.minutes | Agenda: move the time later by the rounding minutes |
org.date.earlier.minutes | Agenda: move the time earlier by the rounding minutes |
org.shift.up | Increase the timestamp part, raise the priority, or go to the previous item |
org.shift.down | Decrease the timestamp part, lower the priority, or go to the next item |
org.schedule.remove | Remove the scheduled date of the entry |
org.deadline.remove | Remove the deadline of the entry |
org.schedule.delay | Delay the scheduled date until a day |
org.deadline.warning | Warn of the deadline from a day |
org.timestamp.overlays.toggle | Show timestamps in the custom formats, or not |
¹ Where the command does not apply, the key does what it does in any
buffer: <C-a> off a timestamp still increments the number under the
cursor, <S-Right> off a timestamp goes a word right (and on a
headline or an item too, as org_support_shift_select says), and
<CR> in a source block's code is Vim's own.
The plugin's own keys#
The plugin adds keys of its own, which only an editor can carry out:
| Keys | Name in mappings | Scope | What it does |
|---|---|---|---|
<Tab> | cycle | org | Cycle the visibility of the subtree at the cursor |
<S-Tab> | global_cycle | org | Cycle the visibility of the whole file |
q | quit | agenda | Close the agenda |
K | hover | agenda | Show the entry of the line in a popup at the cursor, highlighted |
g? | help | org, agenda | Show the keys of the buffer in a popup |
A capture buffer is an Org file, so it has the keys of Org files as well as its own.
How they behave#
As in Neovim: counts work (3<C-a>), . repeats the last change, the keys
of the commands Org gives a region work on a Visual selection, and the
keys marked ¹ give back their own meaning where the command does not
apply. A date is picked in Org's calendar, at the bottom, or typed there
with i, as at Org's prompt (fri 10:00, +2d). With coc.nvim, which
passes on only an error's message, a key marked ¹ falls back to its own
meaning whenever the server refuses.
In a terminal, Vim reads a key with a modifier only as the terminal sends
it. <C-Space> comes as NUL, which the plugin binds too (<C-@>), and Alt
with a character (<M-m>) as <Esc> then the character in tmux and most
terminals, which it binds too (<Esc>m). Alt with an arrow comes as Vim
reads it in xterm and tmux. <S-CR> and the other keys with <M-…> or <C-S-…> need a terminal that reports
modifiers, as xterm does once Vim turns its modifyOtherKeys on; in tmux,
GNU screen or the Linux console Shift-Enter arrives as <CR>. There, bind the command to a
key that arrives, with mappings (below) or :Org return item:
let g:org_lsp = {'mappings': {'org': {'org.return.item': ['<S-CR>', '<C-j>']}}}Changing them#
Keys are set with mappings in g:org_lsp, before the plugin loads. It has
one dictionary per scope: global, org, agenda, capture, calendar
and columns. In a scope, a command (the second column above, or one of
the plugin's own names) maps to:
- a key, which takes the place of the command's default keys;
- a list of keys, to have more than one;
0, to leave the command without a key.
Commands that are not listed keep their default keys.
let g:org_lsp = {
\ 'mappings': {
\ 'global': {'org.agenda.dispatch': '<Leader>a'},
\ 'org': {'org.todo': ['cit', '<Leader>ot'], 'org.todo.next': '<C-n>', 'org.todo.previous': 0},
\ 'agenda': {'quit': ['q', '<Esc>']},
\ },
\ }0 for a scope sets no keys there, the plugin's own included; 0 for
mappings sets none at all:
let g:org_lsp = {'mappings': {'org': 0}} " nothing in Org files
let g:org_lsp = {'mappings': 0} " nothing anywhereFrom the command line#
:Org runs a command by its name without the org. prefix, with
completion: :Org todo.next, :Org agenda todos, and a group on its own
runs its dispatcher: :Org agenda.