org-lsp

Keys in VS Code

The setting org-lsp.keys picks which keys the extension binds:

  • "emacs" (the default): Emacs's keys but those VS Code uses for text, in Org files (Ctrl+C Ctrl+T, Tab, Alt and the arrows …), in capture buffers, and Org's single letters in the agenda and the date prompt, which are read-only. In Org files Shift, Alt+Shift and Ctrl+Shift with the arrows select, Ctrl+A, Ctrl+E, Ctrl+K, Ctrl+O, Ctrl+X, Ctrl+Y and Ctrl+Enter are VS Code's, and Ctrl+C copies a selection: Org's Ctrl+C keys start where nothing is selected.
  • "emacs_full": all of Emacs's keys, those too, listed below under Emacs, every key. In Org files Ctrl+C then always waits for a second key instead of copying; Ctrl+Insert and the context menu still copy.
  • "vim": the Neovim plugin's keys, for VSCodeVim. In Org files, VS Code binds only the keys that take nothing from Vim (Tab, Shift+Tab, Ctrl+Space, Ctrl+A, Ctrl+X, Shift+Up, Shift+Down), in Normal mode; the keys with the leader go in VSCodeVim's own settings, below. Keys such as cit would take c from Vim, so they are not bound.
  • "custom": no keys at all. Bind the commands yourself, as below.

Tab and Shift+Tab cycle the visibility of a subtree and of the whole file, as Org's TAB and S-TAB do: folded, its children, all of it; the top level, every headline, everything. Off a headline, block or drawer, Tab is VS Code's own. The commands are also in the Command Palette under Org, and the ones that change the text at the cursor under Quick Fix… (Ctrl+.). Org: Show the keys lists the keys of the editor at hand.

The bindings are written into package.json from the server's own description of its commands. Preferences: Open Keyboard Shortcuts lists them; search for org.. vscode.org says how to install and set up the extension.

The keys#

Emacs ("org-lsp.keys": "emacs", the default)#

In Org files#

KeysCommandWhat it does
Ctrl+C Ctrl+X Ctrl+Iorg.clock.inClock in
Ctrl+C Ctrl+X Ctrl+Xorg.clock.in.lastClock in the last clocked task
Ctrl+C Ctrl+X Ctrl+Zorg.clock.resolveResolve open clocks
Ctrl+C Ctrl+X Ctrl+Oorg.clock.outClock out
Ctrl+C Ctrl+X Ctrl+Qorg.clock.cancelCancel the clock
Ctrl+C Ctrl+X Ctrl+Jorg.clock.gotoGo to the clocked entry
Ctrl+C Ctrl+X Ctrl+Dorg.clock.displayShow the time clocked under each headline
Ctrl+C Ctrl+X Ctrl+Rorg.clock.reportInsert or update a clock table
Ctrl+C Ctrl+X Ctrl+Uorg.dblock.updateUpdate the dynamic block
Ctrl+C Ctrl+X xorg.dblock.insertInsert a dynamic block
Ctrl+C Ctrl+Aorg.attachAttachments of the entry
Ctrl+C Ctrl+Torg.todoChange the TODO state
Ctrl+C ,org.prioritySet the priority
Ctrl+C Ctrl+X porg.property.setSet a property of the entry
Ctrl+C Ctrl+X eorg.effort.setSet the effort of the entry
Ctrl+C Ctrl+X Shift+Eorg.effort.increaseSet the effort to the next allowed value
Ctrl+C Ctrl+X oorg.ordered.toggleToggle whether subtasks must be done in order (ORDERED)
Ctrl+C Ctrl+X Shift+2org.cite.insertInsert a citation, or edit the one at the cursor
Ctrl+C Ctrl+Qorg.tags.setSet the tags of the headline
Ctrl+C Ctrl+Corg.checkbox.toggleToggle the checkbox
Enter ¹org.returnNew line, as Org's RET makes it
Alt+Enterorg.meta.returnNew heading, item or table row
Alt+Shift+Enterorg.insert.todo.headingNew TODO heading, or item with a checkbox
Ctrl+C Ctrl+X torg.inlinetask.insertInsert an inline task
Alt+Left ¹org.meta.leftPromote the heading; outdent the item; move the table column left
Alt+Right ¹org.meta.rightDemote the heading; indent the item, the drawer or the block; move the table column right
Alt+Up ¹org.meta.upMove the subtree, the item or the table row up
Alt+Down ¹org.meta.downMove the subtree, the item or the table row down
Ctrl+C -org.table.hlineInsert a rule below the table row
Ctrl+C Enterorg.table.hline.moveInsert a rule below the table row and go below it
Ctrl+C Shift+6org.sortSort the entries, the items or the table rows
Ctrl+C /org.sparse.treeShow a sparse tree
Ctrl+C Ctrl+Rorg.revealShow the context of the cursor
Ctrl+C Ctrl+X Ctrl+Worg.cut.subtreeCut the subtree
Ctrl+C Ctrl+X Alt+Worg.copy.subtreeCopy the subtree
Ctrl+C Ctrl+X Ctrl+Yorg.paste.subtreePaste the subtree
Ctrl+C Ctrl+Worg.refileRefile the entry
Ctrl+C Alt+Worg.refile.copyCopy the entry to a refile target
Ctrl+C Ctrl+Zorg.add.noteAdd a note to the entry
Ctrl+C Ctrl+V t, Ctrl+C Ctrl+V Ctrl+Torg.babel.tangleTangle the file's code blocks
Ctrl+C Ctrl+V e, Ctrl+C Ctrl+V Ctrl+Eorg.babel.executeEvaluate the code block or call at the cursor through Emacs
Ctrl+C Ctrl+V b, Ctrl+C Ctrl+V Ctrl+Borg.babel.execute.bufferEvaluate the file's code blocks through Emacs
Ctrl+C Ctrl+V s, Ctrl+C Ctrl+V Ctrl+Sorg.babel.execute.subtreeEvaluate the subtree's code blocks through Emacs
Ctrl+C Ctrl+V korg.babel.remove_resultRemove the results of the code block at the cursor
Ctrl+C Ctrl+Norg.heading.nextMove to the next heading
Ctrl+C Ctrl+Porg.heading.previousMove to the previous heading
Ctrl+C Ctrl+Forg.heading.forwardMove to the next heading of the same level
Ctrl+C Ctrl+Borg.heading.backwardMove to the previous heading of the same level
Ctrl+C Ctrl+Uorg.heading.upMove to the parent heading
Ctrl+C Ctrl+X Ctrl+Norg.link.nextMove to the next link
Ctrl+C Ctrl+X Ctrl+Porg.link.previousMove to the previous link
Ctrl+C Ctrl+Jorg.gotoGo to a heading of the file
Ctrl+C Ctrl+X forg.footnote.actionMake a footnote, or go between a footnote and its definition
Ctrl+C ;org.toggle.commentToggle the COMMENT keyword of the heading
Ctrl+C Ctrl+X Ctrl+Forg.emphasizeInsert emphasis markers
Ctrl+C Ctrl+,org.structure.templateInsert a block (structure template)
Ctrl+C Ctrl+X dorg.drawer.insertInsert a drawer
Ctrl+C Ctrl+X corg.subtree.cloneClone the subtree, shifting its dates
Shift+Enter ¹org.table.copy.downCopy the field down to the next row
Ctrl+C +org.table.sumSum the numbers of the table column
Ctrl+C ?org.table.field.infoShow the references of the table field
Ctrl+C Shift+\org.table.createInsert an empty table
Ctrl+C " gorg.plot.gnuplotPlot the table with gnuplot
Ctrl+C " aorg.table.ascii.plotDraw the column at the cursor as bars
Ctrl+C Ctrl+V n, Ctrl+C Ctrl+V Ctrl+Norg.babel.nextMove to the next code block
Ctrl+C Ctrl+V p, Ctrl+C Ctrl+V Ctrl+Porg.babel.previousMove to the previous code block
Ctrl+C Ctrl+V gorg.babel.gotoGo to a named code block
Ctrl+C Ctrl+V iorg.babel.lob.ingestAdd the file's named code blocks to the Library of Babel
Ctrl+C Alt+Forg.block.nextMove to the next block
Ctrl+C Alt+Borg.block.previousMove to the previous block
Ctrl+C 'org.edit.specialEdit the block in a file of its own
Ctrl+C Ctrl+X borg.tree.indirectShow the subtree in a file of its own
Ctrl+C `org.table.edit.fieldEdit the table field in a file of its own
Ctrl+C Ctrl+X Ctrl+Corg.columnsColumn view
Ctrl+C Ctrl+X Ctrl+Vorg.link.previewPreview the images of links
Ctrl+C Ctrl+X Ctrl+Lorg.latex.previewPreview LaTeX fragments
Ctrl+C Ctrl+X 0org.timer.startStart the relative timer
Ctrl+C Ctrl+X .org.timer.insertInsert the timer's value
Ctrl+C Ctrl+X -org.timer.itemInsert a list item with the timer's value
Ctrl+C Ctrl+X ,org.timer.pausePause or continue the timer
Ctrl+C Ctrl+X _org.timer.stopStop the timer
Ctrl+C Ctrl+X ;org.timer.setSet a countdown timer
Ctrl+C Ctrl+Eorg.export.dispatchExport the file through Emacs
Ctrl+C Taborg.table.toggle.column.widthShrink or expand the table column
Ctrl+C Shift+8org.table.recalculate.lineRecalculate the table's current line
Ctrl+C Shift+[org.table.formula.debuggerTurn the formula debugger on or off
Ctrl+C Ctrl+Oorg.openOpen the link or thing at the cursor
Ctrl+C lorg.link.storeStore a link to the place at the cursor
Ctrl+C Ctrl+Lorg.link.insertInsert a link, or edit the one at the cursor
Ctrl+C Alt+Lorg.link.insert.lastInsert the last stored link
Ctrl+C Ctrl+Alt+Lorg.link.insert.allInsert all stored links
Ctrl+C Ctrl+X Ctrl+S, Ctrl+C Shift+4org.archive.subtreeArchive the subtree
Ctrl+C Ctrl+X Shift+Aorg.archive.siblingArchive the subtree under its Archive sibling
Ctrl+C Ctrl+X aorg.archive.tagToggle the ARCHIVE tag
Ctrl+C Ctrl+X Ctrl+Aorg.archive.defaultArchive with the default command
Ctrl+C n iorg.roam.node.insertRoam: insert a link to a node
Ctrl+C n d forg.roam.dailies.goto.nextRoam: go to the next daily note
Ctrl+C n d borg.roam.dailies.goto.previousRoam: go to the previous daily note
Ctrl+C j forg.journal.next.entryJournal: next entry
Ctrl+C j borg.journal.previous.entryJournal: previous entry
Ctrl+C j sorg.journal.searchJournal: search between two dates
Ctrl+C Ctrl+Sorg.scheduleSchedule the entry
Ctrl+C Ctrl+Dorg.deadlineSet the deadline of the entry
Ctrl+C .org.timestamp.insertInsert or change a timestamp
Ctrl+C !org.timestamp.insert.inactiveInsert or change an inactive timestamp
Ctrl+C Ctrl+X Ctrl+Torg.timestamp.overlays.toggleShow timestamps in the custom formats, or not
Ctrl+C >org.goto.calendarShow the calendar at the date of the line
Tab ¹org-lsp.cycleCycle the visibility of the subtree, block or drawer at the cursor
Shift+Taborg-lsp.cycleGlobalCycle the visibility of the whole file
Ctrl+C aorg.agenda.dispatchAgenda commands
Ctrl+C corg.captureCapture
Ctrl+C n forg.roam.node.findRoam: find a node
Ctrl+C n corg.roam.captureRoam: capture to a node
Ctrl+C n d norg.roam.dailies.capture.todayRoam: capture to today's daily note
Ctrl+C n d dorg.roam.dailies.goto.todayRoam: go to today's daily note
Ctrl+C n d torg.roam.dailies.goto.tomorrowRoam: go to tomorrow's daily note
Ctrl+C n d yorg.roam.dailies.goto.yesterdayRoam: go to yesterday's daily note
Ctrl+C n d vorg.roam.dailies.capture.dateRoam: capture to the daily note of a date
Ctrl+C n d corg.roam.dailies.goto.dateRoam: go to the daily note of a date
Ctrl+C n d .org.roam.dailies.find.directoryRoam: open the directory of the daily notes
Ctrl+C n lorg.roam.buffer.toggleRoam: show or hide the org-roam buffer
Ctrl+C j jorg.journal.new.entryJournal: new entry

In a capture buffer#

KeysCommandWhat it does
Ctrl+C Ctrl+Corg.capture.finishCapture: finish
Ctrl+C Ctrl+Korg.capture.abortCapture: abort
Ctrl+C Ctrl+Worg.capture.refileCapture: refile the entry

In the agenda#

KeysCommandWhat it does
Ctrl+C aorg.agenda.dispatchAgenda commands
Ctrl+C corg.captureCapture
Ctrl+C n forg.roam.node.findRoam: find a node
Ctrl+C n corg.roam.captureRoam: capture to a node
Ctrl+C n d norg.roam.dailies.capture.todayRoam: capture to today's daily note
Ctrl+C n d dorg.roam.dailies.goto.todayRoam: go to today's daily note
Ctrl+C n d torg.roam.dailies.goto.tomorrowRoam: go to tomorrow's daily note
Ctrl+C n d yorg.roam.dailies.goto.yesterdayRoam: go to yesterday's daily note
Ctrl+C n d vorg.roam.dailies.capture.dateRoam: capture to the daily note of a date
Ctrl+C n d corg.roam.dailies.goto.dateRoam: go to the daily note of a date
Ctrl+C n d .org.roam.dailies.find.directoryRoam: open the directory of the daily notes
Ctrl+C n lorg.roam.buffer.toggleRoam: show or hide the org-roam buffer
Ctrl+C j jorg.journal.new.entryJournal: new entry
forg.agenda.laterAgenda: go forward in time
borg.agenda.earlierAgenda: go backward in time
.org.agenda.todayAgenda: go to today
[org.agenda.query.addAgenda: search for another word, or show inactive timestamps
]org.agenda.query.subtractAgenda: search without a word, or show inactive timestamps
Shift+[org.agenda.query.add.regexpAgenda: search for another regexp, or show inactive timestamps
Shift+]org.agenda.query.subtract.regexpAgenda: search without a regexp, or show inactive timestamps
Shift+Jorg.agenda.goto.dateAgenda: go to a date
v dorg.agenda.dayAgenda: day view
v worg.agenda.weekAgenda: week view
v torg.agenda.fortnightAgenda: fortnight view
v morg.agenda.monthAgenda: month view
v yorg.agenda.yearAgenda: year view
rorg.agenda.redoAgenda: rebuild
Enterorg.agenda.gotoAgenda: go to the entry
Taborg.agenda.goto.otherAgenda: go to the entry in another window
s, Ctrl+X Ctrl+Sorg.agenda.saveSave all Org files
v lorg.agenda.logAgenda: log mode, what was closed and clocked
Shift+Korg.agenda.habitsAgenda: show or hide habits
Ctrl+X Ctrl+Worg.agenda.writeAgenda: write it to a file
Ctrl+C Ctrl+X Ctrl+Corg.agenda.columnsAgenda: column view
Shift+R, v Shift+Rorg.agenda.clockreportAgenda: the clock report
Shift+E, v Shift+Eorg.agenda.entry.textAgenda: entry text mode, some text of each entry under its line
Shift+Forg.agenda.followAgenda: follow mode, the cursor's entry in another window
morg.agenda.bulk.markAgenda: mark the entry for a bulk action
uorg.agenda.bulk.unmarkAgenda: unmark the entry
Shift+Uorg.agenda.bulk.unmark.allAgenda: unmark all entries
Alt+Morg.agenda.bulk.toggleAgenda: toggle the mark of the entry
Shift+8org.agenda.bulk.mark.allAgenda: mark all entries
Alt+Shift+8org.agenda.bulk.toggle.allAgenda: toggle the marks of all entries
Shift+5org.agenda.bulk.mark.regexpAgenda: mark the entries matching a regexp
Shift+Borg.agenda.bulk.actionAgenda: an action on the marked entries
/org.agenda.filterAgenda: filter by tags, categories, effort and regexps
\org.agenda.filter.tagAgenda: filter by tag
<org.agenda.filter.categoryAgenda: filter by the line's category
=org.agenda.filter.regexpAgenda: filter by a regexp
_org.agenda.filter.effortAgenda: filter by effort
Shift+6org.agenda.filter.top.headlineAgenda: filter by the line's top headline
Shift+\org.agenda.filter.removeAgenda: remove all filters
v aorg.agenda.archivesAgenda: include archived trees
v [org.agenda.inactiveAgenda: show inactive timestamps once
v Shift+Aorg.agenda.archives.filesAgenda: include archived trees and archive files
Shift+Iorg.clock.inClock in
Shift+Oorg.clock.outClock out
Shift+Xorg.clock.cancelCancel the clock
torg.todoChange the TODO state
Ctrl+Shift+Rightorg.todo.nextsetSwitch to the next TODO keyword set
Ctrl+Shift+Leftorg.todo.previoussetSwitch to the previous TODO keyword set
+, Shift+Uporg.priority.upRaise the priority
-, Shift+Downorg.priority.downLower the priority
,org.prioritySet the priority
Ctrl+C Ctrl+X porg.property.setSet a property of the entry
eorg.effort.setSet the effort of the entry
:, Ctrl+C Ctrl+Qorg.tags.setSet the tags of the headline
Ctrl+C Ctrl+Worg.refileRefile the entry
zorg.add.noteAdd a note to the entry
Ctrl+C Ctrl+Oorg.openOpen the link or thing at the cursor
Ctrl+C lorg.link.storeStore a link to the place at the cursor
Shift+4, Ctrl+C Ctrl+X Ctrl+S, Ctrl+C Shift+4org.archive.subtreeArchive the subtree
Ctrl+C Ctrl+X Shift+Aorg.archive.siblingArchive the subtree under its Archive sibling
Ctrl+C Ctrl+X aorg.archive.tagToggle the ARCHIVE tag
Ctrl+C Ctrl+X Ctrl+Aorg.archive.defaultArchive with the default command
aorg.archive.confirmArchive with the default command, once confirmed
Shift+Rightorg.date.laterMove the date one day later
Shift+Leftorg.date.earlierMove the date one day earlier
Ctrl+C Ctrl+Sorg.scheduleSchedule the entry
Ctrl+C Ctrl+Dorg.deadlineSet the deadline of the entry
g ?org-lsp.helpShow the keys
qorg-lsp.agenda.closeAgenda: close
qorg.columns.quitColumn view: quit
g, rorg.columns.redoColumn view: recompute
eorg.columns.editColumn view: edit the value
n, Shift+Rightorg.columns.nextColumn view: the next allowed value
p, Shift+Leftorg.columns.previousColumn view: the previous allowed value
vorg.columns.showColumn view: show the value
aorg.columns.allowedColumn view: edit the allowed values
Ctrl+C Ctrl+Torg.columns.todoColumn view: change the TODO state
Ctrl+C Ctrl+Corg.columns.toggleColumn view: toggle a checkbox, or quit
Alt+Leftorg.columns.move.leftColumn view: move the column left
Alt+Rightorg.columns.move.rightColumn view: move the column right
Alt+Shift+Leftorg.columns.deleteColumn view: delete the column
<org.columns.narrowColumn view: make the column narrower
>org.columns.widenColumn view: make the column wider
Alt+Uporg.columns.row.upColumn view: move the entry up
Alt+Downorg.columns.row.downColumn view: move the entry down
Leftorg-lsp.columns.leftColumn view: the column to the left
Rightorg-lsp.columns.rightColumn view: the column to the right

In the date prompt#

KeysCommandWhat it does
j norg.journal.new.date.entryJournal: new entry for a date
]org.journal.next.entryJournal: next entry
[org.journal.previous.entryJournal: previous entry
j s forg.journal.search.foreverJournal: search every entry
j s Shift+Forg.journal.search.futureJournal: search the entries to come
j s worg.journal.search.calendar.weekJournal: search the calendar's week
j s morg.journal.search.calendar.monthJournal: search the calendar's month
j s yorg.journal.search.calendar.yearJournal: search the calendar's year
j rorg.journal.read.entryJournal: the entry of the calendar's day
j dorg.journal.display.entryJournal: show the entry of the calendar's day
j morg.journal.mark.entriesJournal: mark the days with an entry in the calendar
Shift+Rightorg.calendar.day.laterDate prompt: one day later
Shift+Leftorg.calendar.day.earlierDate prompt: one day earlier
Shift+Downorg.calendar.week.laterDate prompt: one week later
Shift+Uporg.calendar.week.earlierDate prompt: one week earlier
Alt+Shift+Rightorg.calendar.month.laterDate prompt: one month later
Alt+Shift+Leftorg.calendar.month.earlierDate prompt: one month earlier
Alt+Shift+Downorg.calendar.year.laterDate prompt: one year later
Alt+Shift+Uporg.calendar.year.earlierDate prompt: one year earlier
>org.calendar.scroll.laterDate prompt: show the next months
<org.calendar.scroll.earlierDate prompt: show the previous months
.org.calendar.todayDate prompt: go to today
Enterorg.calendar.selectDate prompt: take the day at the cursor
iorg.calendar.typeDate prompt: type the date
torg.calendar.timeDate prompt: pick the time, or go back to the day
q, Ctrl+Gorg.calendar.cancelDate prompt: cancel

Emacs, every key ("org-lsp.keys": "emacs_full")#

All of Emacs's keys: the keys above, and those the default leaves to the editor, listed here. In Org files and capture buffers Shift, Alt+Shift and Ctrl+Shift with the arrows are then Org's (where org_support_shift_select lets them), and so are Ctrl+A, Ctrl+E, Ctrl+K, Ctrl+O, Ctrl+X, Ctrl+Y and Ctrl+Enter; Org's Ctrl+C keys start with text selected too, so that Ctrl+C no longer copies (Ctrl+Insert still does).

KeysCommandWhat it does
Ctrl+Shift+Rightorg.todo.nextsetSwitch to the next TODO keyword set
Ctrl+Shift+Leftorg.todo.previoussetSwitch to the previous TODO keyword set
Ctrl+Enterorg.insert.heading.afterNew heading after the subtree
Ctrl+Shift+Enterorg.insert.todo.heading.afterNew TODO heading after the subtree
Alt+Shift+Leftorg.shiftmeta.leftPromote the subtree; outdent the item with its children; delete the table column
Alt+Shift+Rightorg.shiftmeta.rightDemote the subtree; indent the item with its children; insert a table column
Alt+Shift+Uporg.shiftmeta.upDelete the table row
Alt+Shift+Downorg.shiftmeta.downInsert a table row above
Ctrl+Oorg.open.lineOpen a line, or in a table insert a row
Ctrl+Yorg.yankYank, a subtree at its level
Ctrl+Aorg.beginning.of.lineMove to the start of the headline's title
Ctrl+Eorg.end.of.lineMove to the end of the headline's title
Ctrl+Korg.kill.lineKill the headline's text to the tags, or the tags
Ctrl+X n sorg.narrow.subtreeNarrow to the subtree: it in a file of its own
Ctrl+X n borg.narrow.blockNarrow to the block: it in a file of its own
Ctrl+X n worg.narrow.widenWiden: the narrowed file written back and closed
Shift+Uporg.shift.upIncrease the timestamp part, raise the priority, or go to the previous item
Shift+Downorg.shift.downDecrease the timestamp part, lower the priority, or go to the next item
Shift+Leftorg.shift.leftMove the date a day earlier, or cycle the TODO state or the list's bullets backward
Shift+Rightorg.shift.rightMove the date a day later, or cycle the TODO state or the list's bullets forward

Vim ("org-lsp.keys": "vim")#

In Org files#

KeysCommandWhat it does
Ctrl+Spaceorg.checkbox.toggleToggle the checkbox
Enter ¹org.returnNew line, as Org's RET makes it
Shift+Enter ¹org.return.itemNew line; on a list item, the next item
Ctrl+A ¹org.timestamp.upIncrease the part of the timestamp at the cursor
Ctrl+X ¹org.timestamp.downDecrease the part of the timestamp at the cursor
Shift+Up ¹org.date.laterMove the date one day later
Shift+Down ¹org.date.earlierMove the date one day earlier
Shift+Left ¹org.shift.leftMove the date a day earlier, or cycle the TODO state or the list's bullets backward
Shift+Right ¹org.shift.rightMove the date a day later, or cycle the TODO state or the list's bullets forward
Taborg-lsp.cycleCycle the visibility of the subtree, block or drawer at the cursor
Shift+Taborg-lsp.cycleGlobalCycle the visibility of the whole file

In a capture buffer#

KeysCommandWhat it does
Ctrl+Corg.capture.finishCapture: finish

In the agenda#

KeysCommandWhat it does
forg.agenda.laterAgenda: go forward in time
borg.agenda.earlierAgenda: go backward in time
.org.agenda.todayAgenda: go to today
[org.agenda.query.addAgenda: search for another word, or show inactive timestamps
]org.agenda.query.subtractAgenda: search without a word, or show inactive timestamps
Shift+[org.agenda.query.add.regexpAgenda: search for another regexp, or show inactive timestamps
Shift+]org.agenda.query.subtract.regexpAgenda: search without a regexp, or show inactive timestamps
Shift+Jorg.agenda.goto.dateAgenda: go to a date
v dorg.agenda.dayAgenda: day view
v worg.agenda.weekAgenda: week view
v torg.agenda.fortnightAgenda: fortnight view
v morg.agenda.monthAgenda: month view
v yorg.agenda.yearAgenda: year view
rorg.agenda.redoAgenda: rebuild
Enterorg.agenda.gotoAgenda: go to the entry
Taborg.agenda.goto.otherAgenda: go to the entry in another window
s, Ctrl+X Ctrl+Sorg.agenda.saveSave all Org files
v lorg.agenda.logAgenda: log mode, what was closed and clocked
Shift+Korg.agenda.habitsAgenda: show or hide habits
Ctrl+X Ctrl+Worg.agenda.writeAgenda: write it to a file
Ctrl+C Ctrl+X Ctrl+Corg.agenda.columnsAgenda: column view
Shift+R, v Shift+Rorg.agenda.clockreportAgenda: the clock report
Shift+E, v Shift+Eorg.agenda.entry.textAgenda: entry text mode, some text of each entry under its line
Shift+Forg.agenda.followAgenda: follow mode, the cursor's entry in another window
morg.agenda.bulk.markAgenda: mark the entry for a bulk action
uorg.agenda.bulk.unmarkAgenda: unmark the entry
Shift+Uorg.agenda.bulk.unmark.allAgenda: unmark all entries
Alt+Morg.agenda.bulk.toggleAgenda: toggle the mark of the entry
Shift+8org.agenda.bulk.mark.allAgenda: mark all entries
Alt+Shift+8org.agenda.bulk.toggle.allAgenda: toggle the marks of all entries
Shift+5org.agenda.bulk.mark.regexpAgenda: mark the entries matching a regexp
Shift+Borg.agenda.bulk.actionAgenda: an action on the marked entries
/org.agenda.filterAgenda: filter by tags, categories, effort and regexps
\org.agenda.filter.tagAgenda: filter by tag
<org.agenda.filter.categoryAgenda: filter by the line's category
=org.agenda.filter.regexpAgenda: filter by a regexp
_org.agenda.filter.effortAgenda: filter by effort
Shift+6org.agenda.filter.top.headlineAgenda: filter by the line's top headline
Shift+\org.agenda.filter.removeAgenda: remove all filters
v aorg.agenda.archivesAgenda: include archived trees
v [org.agenda.inactiveAgenda: show inactive timestamps once
v Shift+Aorg.agenda.archives.filesAgenda: include archived trees and archive files
Shift+Iorg.clock.inClock in
Shift+Oorg.clock.outClock out
Shift+Xorg.clock.cancelCancel the clock
torg.todoChange the TODO state
Ctrl+Shift+Rightorg.todo.nextsetSwitch to the next TODO keyword set
Ctrl+Shift+Leftorg.todo.previoussetSwitch to the previous TODO keyword set
+, Shift+Uporg.priority.upRaise the priority
-, Shift+Downorg.priority.downLower the priority
,org.prioritySet the priority
Ctrl+C Ctrl+X porg.property.setSet a property of the entry
eorg.effort.setSet the effort of the entry
Ctrl+C Ctrl+Qorg.tags.setSet the tags of the headline
Ctrl+C Ctrl+Worg.refileRefile the entry
zorg.add.noteAdd a note to the entry
Ctrl+C Ctrl+Oorg.openOpen the link or thing at the cursor
Ctrl+C lorg.link.storeStore a link to the place at the cursor
Ctrl+C Ctrl+X Ctrl+S, Ctrl+C Shift+4org.archive.subtreeArchive the subtree
Ctrl+C Ctrl+X Shift+Aorg.archive.siblingArchive the subtree under its Archive sibling
Ctrl+C Ctrl+X aorg.archive.tagToggle the ARCHIVE tag
Ctrl+C Ctrl+X Ctrl+Aorg.archive.defaultArchive with the default command
aorg.archive.confirmArchive with the default command, once confirmed
Shift+Rightorg.date.laterMove the date one day later
Shift+Leftorg.date.earlierMove the date one day earlier
Ctrl+C Ctrl+Sorg.scheduleSchedule the entry
Ctrl+C Ctrl+Dorg.deadlineSet the deadline of the entry
g ?org-lsp.helpShow the keys
qorg-lsp.agenda.closeAgenda: close
qorg.columns.quitColumn view: quit
rorg.columns.redoColumn view: recompute
eorg.columns.editColumn view: edit the value
n, Shift+Rightorg.columns.nextColumn view: the next allowed value
p, Shift+Leftorg.columns.previousColumn view: the previous allowed value
vorg.columns.showColumn view: show the value
aorg.columns.allowedColumn view: edit the allowed values
torg.columns.todoColumn view: change the TODO state
Enterorg.columns.toggleColumn view: toggle a checkbox, or quit
Alt+Leftorg.columns.move.leftColumn view: move the column left
Alt+Rightorg.columns.move.rightColumn view: move the column right
Alt+Shift+Leftorg.columns.deleteColumn view: delete the column
<org.columns.narrowColumn view: make the column narrower
>org.columns.widenColumn view: make the column wider
Alt+Uporg.columns.row.upColumn view: move the entry up
Alt+Downorg.columns.row.downColumn view: move the entry down
h, Leftorg-lsp.columns.leftColumn view: the column to the left
l, Rightorg-lsp.columns.rightColumn view: the column to the right

In the date prompt#

KeysCommandWhat it does
]org.journal.next.entryJournal: next entry
[org.journal.previous.entryJournal: previous entry
l, Shift+Rightorg.calendar.day.laterDate prompt: one day later
h, Shift+Leftorg.calendar.day.earlierDate prompt: one day earlier
j, Shift+Downorg.calendar.week.laterDate prompt: one week later
k, Shift+Uporg.calendar.week.earlierDate prompt: one week earlier
Alt+Shift+Rightorg.calendar.month.laterDate prompt: one month later
Alt+Shift+Leftorg.calendar.month.earlierDate prompt: one month earlier
Alt+Shift+Downorg.calendar.year.laterDate prompt: one year later
Alt+Shift+Uporg.calendar.year.earlierDate prompt: one year earlier
>org.calendar.scroll.laterDate prompt: show the next months
<org.calendar.scroll.earlierDate prompt: show the previous months
.org.calendar.todayDate prompt: go to today
Enterorg.calendar.selectDate prompt: take the day at the cursor
iorg.calendar.typeDate prompt: type the date
torg.calendar.timeDate prompt: pick the time, or go back to the day
q, Escapeorg.calendar.cancelDate prompt: cancel

¹ Where the command does not apply, the key does what it does without the extension: Tab off a headline, block or drawer indents, Enter in a source block's code is VS Code's own, and with emacs_full Shift+Up off a timestamp selects (and on a headline too, as org_support_shift_select says).

The leader keys, for VSCodeVim#

VS Code cannot bind keys that start with the leader without taking them from Vim. Add them to VSCodeVim's settings instead (they apply in every file; outside Org files the commands say they do not apply):

"vim.normalModeKeyBindingsNonRecursive": [
  { "before": ["<leader>", "o", "a"], "commands": ["org.agenda.dispatch"] },
  { "before": ["<leader>", "o", "x", "i"], "commands": ["org.clock.in"] },
  { "before": ["<leader>", "o", "x", "x"], "commands": ["org.clock.in.last"] },
  { "before": ["<leader>", "o", "x", "z"], "commands": ["org.clock.resolve"] },
  { "before": ["<leader>", "o", "x", "o"], "commands": ["org.clock.out"] },
  { "before": ["<leader>", "o", "x", "q"], "commands": ["org.clock.cancel"] },
  { "before": ["<leader>", "o", "x", "j"], "commands": ["org.clock.goto"] },
  { "before": ["<leader>", "o", "x", "d"], "commands": ["org.clock.display"] },
  { "before": ["<leader>", "o", "x", "r"], "commands": ["org.clock.report"] },
  { "before": ["<leader>", "o", "x", "u"], "commands": ["org.dblock.update"] },
  { "before": ["<leader>", "o", "i", "x"], "commands": ["org.dblock.insert"] },
  { "before": ["<leader>", "o", "x", "a"], "commands": ["org.attach"] },
  { "before": ["<leader>", "o", ","], "commands": ["org.priority"] },
  { "before": ["<leader>", "o", "x", "p"], "commands": ["org.property.set"] },
  { "before": ["<leader>", "o", "x", "e"], "commands": ["org.effort.set"] },
  { "before": ["<leader>", "o", "x", "E"], "commands": ["org.effort.increase"] },
  { "before": ["<leader>", "o", "i", "c"], "commands": ["org.cite.insert"] },
  { "before": ["<leader>", "o", "i", "C"], "commands": ["org.cite.insert.prefix"] },
  { "before": ["<leader>", "o", "t"], "commands": ["org.tags.set"] },
  { "before": ["<leader>", "<CR>"], "commands": ["org.meta.return"] },
  { "before": ["<leader>", "o", "i", "T"], "commands": ["org.insert.todo.heading"] },
  { "before": ["<leader>", "o", "i", "h"], "commands": ["org.insert.heading.after"] },
  { "before": ["<leader>", "o", "i", "t"], "commands": ["org.insert.todo.heading.after"] },
  { "before": ["<leader>", "o", "i", "I"], "commands": ["org.inlinetask.insert"] },
  { "before": ["<leader>", "o", "K"], "commands": ["org.meta.up"] },
  { "before": ["<leader>", "o", "J"], "commands": ["org.meta.down"] },
  { "before": ["<leader>", "o", "T", "d"], "commands": ["org.shiftmeta.up"] },
  { "before": ["<leader>", "o", "T", "O"], "commands": ["org.shiftmeta.down"] },
  { "before": ["<leader>", "o", "T", "o"], "commands": ["org.table.insert.row.below"] },
  { "before": ["<leader>", "o", "-"], "commands": ["org.table.hline"] },
  { "before": ["<leader>", "o", "<CR>"], "commands": ["org.table.hline.move"] },
  { "before": ["<leader>", "o", "<Space>"], "commands": ["org.table.blank.field"] },
  { "before": ["<leader>", "o", "^"], "commands": ["org.sort"] },
  { "before": ["<leader>", "o", "/"], "commands": ["org.sparse.tree"] },
  { "before": ["<leader>", "o", "R"], "commands": ["org.reveal"] },
  { "before": ["<leader>", "o", "s", "d"], "commands": ["org.cut.subtree"] },
  { "before": ["<leader>", "o", "s", "y"], "commands": ["org.copy.subtree"] },
  { "before": ["<leader>", "o", "s", "p"], "commands": ["org.paste.subtree"] },
  { "before": ["<leader>", "o", "r"], "commands": ["org.refile"] },
  { "before": ["<leader>", "o", "y"], "commands": ["org.refile.copy"] },
  { "before": ["<leader>", "o", "n", "a"], "commands": ["org.add.note"] },
  { "before": ["<leader>", "o", "b", "t"], "commands": ["org.babel.tangle"] },
  { "before": ["<leader>", "o", "b", "d"], "commands": ["org.babel.detangle"] },
  { "before": ["<leader>", "o", "b", "e"], "commands": ["org.babel.execute"] },
  { "before": ["<leader>", "o", "b", "b"], "commands": ["org.babel.execute.buffer"] },
  { "before": ["<leader>", "o", "b", "s"], "commands": ["org.babel.execute.subtree"] },
  { "before": ["<leader>", "o", "b", "k"], "commands": ["org.babel.remove_result"] },
  { "before": ["<leader>", "o", "j"], "commands": ["org.goto"] },
  { "before": ["<leader>", "o", "f"], "commands": ["org.footnote.action"] },
  { "before": ["<leader>", "o", "F"], "commands": ["org.footnote.menu"] },
  { "before": ["<leader>", "o", ";"], "commands": ["org.toggle.comment"] },
  { "before": ["<leader>", "o", "i", "e"], "commands": ["org.emphasize"] },
  { "before": ["<leader>", "o", "i", "b"], "commands": ["org.structure.template"] },
  { "before": ["<leader>", "o", "i", "D"], "commands": ["org.drawer.insert"] },
  { "before": ["<leader>", "o", "s", "c"], "commands": ["org.subtree.clone"] },
  { "before": ["<leader>", "o", "D"], "commands": ["org.table.copy.down"] },
  { "before": ["<leader>", "o", "+"], "commands": ["org.table.sum"] },
  { "before": ["<leader>", "o", "?"], "commands": ["org.table.field.info"] },
  { "before": ["<leader>", "o", "i", "<Bar>"], "commands": ["org.table.create"] },
  { "before": ["<leader>", "o", "p", "g"], "commands": ["org.plot.gnuplot"] },
  { "before": ["<leader>", "o", "p", "a"], "commands": ["org.table.ascii.plot"] },
  { "before": ["<leader>", "o", "b", "n"], "commands": ["org.babel.next"] },
  { "before": ["<leader>", "o", "b", "p"], "commands": ["org.babel.previous"] },
  { "before": ["<leader>", "o", "b", "g"], "commands": ["org.babel.goto"] },
  { "before": ["<leader>", "o", "b", "i"], "commands": ["org.babel.lob.ingest"] },
  { "before": ["<leader>", "o", "'"], "commands": ["org.edit.special"] },
  { "before": ["<leader>", "o", "n", "s"], "commands": ["org.narrow.subtree"] },
  { "before": ["<leader>", "o", "n", "b"], "commands": ["org.narrow.block"] },
  { "before": ["<leader>", "o", "n", "w"], "commands": ["org.narrow.widen"] },
  { "before": ["<leader>", "o", "x", "b"], "commands": ["org.tree.indirect"] },
  { "before": ["<leader>", "o", "`"], "commands": ["org.table.edit.field"] },
  { "before": ["<leader>", "o", "x", "c"], "commands": ["org.columns"] },
  { "before": ["<leader>", "o", "x", "v"], "commands": ["org.link.preview"] },
  { "before": ["<leader>", "o", "x", "l"], "commands": ["org.latex.preview"] },
  { "before": ["<leader>", "o", "x", "0"], "commands": ["org.timer.start"] },
  { "before": ["<leader>", "o", "x", "."], "commands": ["org.timer.insert"] },
  { "before": ["<leader>", "o", "x", "-"], "commands": ["org.timer.item"] },
  { "before": ["<leader>", "o", "x", ","], "commands": ["org.timer.pause"] },
  { "before": ["<leader>", "o", "x", "_"], "commands": ["org.timer.stop"] },
  { "before": ["<leader>", "o", "x", ";"], "commands": ["org.timer.set"] },
  { "before": ["<leader>", "o", "e"], "commands": ["org.export.dispatch"] },
  { "before": ["<leader>", "o", "<Tab>"], "commands": ["org.table.toggle.column.width"] },
  { "before": ["<leader>", "o", "*"], "commands": ["org.table.recalculate"] },
  { "before": ["<leader>", "o", "{"], "commands": ["org.table.formula.debugger"] },
  { "before": ["<leader>", "o", "o"], "commands": ["org.open"] },
  { "before": ["<leader>", "o", "l", "s"], "commands": ["org.link.store"] },
  { "before": ["<leader>", "o", "l", "i"], "commands": ["org.link.insert"] },
  { "before": ["<leader>", "o", "$"], "commands": ["org.archive.subtree"] },
  { "before": ["<leader>", "o", "x", "A"], "commands": ["org.archive.sibling"] },
  { "before": ["<leader>", "o", "A"], "commands": ["org.archive.tag"] },
  { "before": ["<leader>", "o", "c"], "commands": ["org.capture"] },
  { "before": ["<leader>", "n", "f"], "commands": ["org.roam.node.find"] },
  { "before": ["<leader>", "n", "i"], "commands": ["org.roam.node.insert"] },
  { "before": ["<leader>", "n", "c"], "commands": ["org.roam.capture"] },
  { "before": ["<leader>", "n", "d", "n"], "commands": ["org.roam.dailies.capture.today"] },
  { "before": ["<leader>", "n", "d", "d"], "commands": ["org.roam.dailies.goto.today"] },
  { "before": ["<leader>", "n", "d", "t"], "commands": ["org.roam.dailies.goto.tomorrow"] },
  { "before": ["<leader>", "n", "d", "y"], "commands": ["org.roam.dailies.goto.yesterday"] },
  { "before": ["<leader>", "n", "d", "v"], "commands": ["org.roam.dailies.capture.date"] },
  { "before": ["<leader>", "n", "d", "c"], "commands": ["org.roam.dailies.goto.date"] },
  { "before": ["<leader>", "n", "d", "f"], "commands": ["org.roam.dailies.goto.next"] },
  { "before": ["<leader>", "n", "d", "b"], "commands": ["org.roam.dailies.goto.previous"] },
  { "before": ["<leader>", "n", "d", "."], "commands": ["org.roam.dailies.find.directory"] },
  { "before": ["<leader>", "n", "l"], "commands": ["org.roam.buffer.toggle"] },
  { "before": ["<leader>", "j", "j"], "commands": ["org.journal.new.entry"] },
  { "before": ["<leader>", "j", "f"], "commands": ["org.journal.next.entry"] },
  { "before": ["<leader>", "j", "b"], "commands": ["org.journal.previous.entry"] },
  { "before": ["<leader>", "j", "s"], "commands": ["org.journal.search"] },
  { "before": ["<leader>", "o", "i", "s"], "commands": ["org.schedule"] },
  { "before": ["<leader>", "o", "i", "d"], "commands": ["org.deadline"] },
  { "before": ["<leader>", "o", "i", "."], "commands": ["org.timestamp.insert"] },
  { "before": ["<leader>", "o", "i", "!"], "commands": ["org.timestamp.insert.inactive"] },
  { "before": ["<leader>", "o", ">"], "commands": ["org.goto.calendar"] }
]

Every command#

CommandIn the Command Palette
org.agenda.dispatchOrg: Agenda commands
org.agenda.listOrg: Agenda for the current week or day
org.agenda.todosOrg: List of all TODO entries
org.agenda.laterOrg: Agenda: go forward in time
org.agenda.earlierOrg: Agenda: go backward in time
org.agenda.todayOrg: Agenda: go to today
org.agenda.query.addOrg: Agenda: search for another word, or show inactive timestamps
org.agenda.query.subtractOrg: Agenda: search without a word, or show inactive timestamps
org.agenda.query.add.regexpOrg: Agenda: search for another regexp, or show inactive timestamps
org.agenda.query.subtract.regexpOrg: Agenda: search without a regexp, or show inactive timestamps
org.agenda.goto.dateOrg: Agenda: go to a date
org.agenda.dayOrg: Agenda: day view
org.agenda.weekOrg: Agenda: week view
org.agenda.fortnightOrg: Agenda: fortnight view
org.agenda.monthOrg: Agenda: month view
org.agenda.yearOrg: Agenda: year view
org.agenda.redoOrg: Agenda: rebuild
org.agenda.gotoOrg: Agenda: go to the entry
org.agenda.goto.otherOrg: Agenda: go to the entry in another window
org.agenda.saveOrg: Save all Org files
org.agenda.logOrg: Agenda: log mode, what was closed and clocked
org.agenda.habitsOrg: Agenda: show or hide habits
org.agenda.writeOrg: Agenda: write it to a file
org.agenda.apptOrg: Add today's appointments from the agenda files
org.agenda.columnsOrg: Agenda: column view
org.agenda.clockreportOrg: Agenda: the clock report
org.agenda.entry.textOrg: Agenda: entry text mode, some text of each entry under its line
org.agenda.followOrg: Agenda: follow mode, the cursor's entry in another window
org.agenda.bulk.markOrg: Agenda: mark the entry for a bulk action
org.agenda.bulk.unmarkOrg: Agenda: unmark the entry
org.agenda.bulk.unmark.allOrg: Agenda: unmark all entries
org.agenda.bulk.toggleOrg: Agenda: toggle the mark of the entry
org.agenda.bulk.mark.allOrg: Agenda: mark all entries
org.agenda.bulk.toggle.allOrg: Agenda: toggle the marks of all entries
org.agenda.bulk.mark.regexpOrg: Agenda: mark the entries matching a regexp
org.agenda.bulk.actionOrg: Agenda: an action on the marked entries
org.agenda.filterOrg: Agenda: filter by tags, categories, effort and regexps
org.agenda.filter.tagOrg: Agenda: filter by tag
org.agenda.filter.categoryOrg: Agenda: filter by the line's category
org.agenda.filter.regexpOrg: Agenda: filter by a regexp
org.agenda.filter.effortOrg: Agenda: filter by effort
org.agenda.filter.top.headlineOrg: Agenda: filter by the line's top headline
org.agenda.filter.removeOrg: Agenda: remove all filters
org.agenda.archivesOrg: Agenda: include archived trees
org.agenda.inactiveOrg: Agenda: show inactive timestamps once
org.agenda.archives.filesOrg: Agenda: include archived trees and archive files
org.clock.inOrg: Clock in
org.clock.in.lastOrg: Clock in the last clocked task
org.clock.resolveOrg: Resolve open clocks
org.clock.outOrg: Clock out
org.clock.cancelOrg: Cancel the clock
org.clock.gotoOrg: Go to the clocked entry
org.clock.displayOrg: Show the time clocked under each headline
org.num.modeOrg: Number the headlines, or stop numbering them
org.indent.modeOrg: Indent the text by the level of its headline, or stop indenting it
org.custom.properties.toggleOrg: Hide the properties of org_custom_properties, or show them again
org.versionOrg: Show the version of the server
org.clock.reportOrg: Insert or update a clock table
org.dblock.updateOrg: Update the dynamic block
org.dblock.insertOrg: Insert a dynamic block
org.attachOrg: Attachments of the entry
org.todoOrg: Change the TODO state
org.todo.yesterdayOrg: Change the TODO state as if it were yesterday
org.todo.nextOrg: Cycle TODO state forward
org.todo.previousOrg: Cycle TODO state backward
org.todo.nextsetOrg: Switch to the next TODO keyword set
org.todo.previoussetOrg: Switch to the previous TODO keyword set
org.priority.upOrg: Raise the priority
org.priority.downOrg: Lower the priority
org.priorityOrg: Set the priority
org.property.setOrg: Set a property of the entry
org.property.deleteOrg: Delete a property of the entry
org.property.delete.globallyOrg: Delete a property from every entry of the file
org.effort.setOrg: Set the effort of the entry
org.effort.increaseOrg: Set the effort to the next allowed value
org.ordered.toggleOrg: Toggle whether subtasks must be done in order (ORDERED)
org.cite.insertOrg: Insert a citation, or edit the one at the cursor
org.cite.insert.prefixOrg: Delete the citation or reference at the cursor, or insert one with a style
org.bibtex.exportOrg: BibTeX: export the entries of the file to a .bib file
org.bibtex.copyOrg: BibTeX: copy the entry at the cursor as BibTeX
org.bibtex.createOrg: BibTeX: new entry, its fields asked for
org.bibtex.create.hereOrg: BibTeX: make the entry at the cursor a BibTeX entry
org.bibtex.checkOrg: BibTeX: ask for the fields the entry at the cursor lacks
org.bibtex.check.allOrg: BibTeX: ask for the fields every entry lacks
org.bibtex.yankOrg: BibTeX: paste a BibTeX entry as a heading
org.bibtex.importOrg: BibTeX: import the entries of a BibTeX file as headings
org.ctags.createOrg: Ctags: make the TAGS file of the file's directory
org.ctags.findOrg: Ctags: go to a topic, or make it
org.tags.setOrg: Set the tags of the headline
org.checkbox.toggleOrg: Toggle the checkbox
org.returnOrg: New line, as Org's RET makes it
org.return.itemOrg: New line; on a list item, the next item
org.meta.returnOrg: New heading, item or table row
org.insert.todo.headingOrg: New TODO heading, or item with a checkbox
org.insert.heading.afterOrg: New heading after the subtree
org.insert.todo.heading.afterOrg: New TODO heading after the subtree
org.inlinetask.insertOrg: Insert an inline task
org.inlinetask.insert.nostateOrg: Insert an inline task without its default TODO state
org.meta.leftOrg: Promote the heading; outdent the item; move the table column left
org.meta.rightOrg: Demote the heading; indent the item, the drawer or the block; move the table column right
org.shiftmeta.leftOrg: Promote the subtree; outdent the item with its children; delete the table column
org.shiftmeta.rightOrg: Demote the subtree; indent the item with its children; insert a table column
org.levels.oddOrg: Convert the file to odd levels only, once confirmed
org.levels.oddevenOrg: Convert the file from odd levels to odd and even ones, once confirmed
org.meta.upOrg: Move the subtree, the item or the table row up
org.meta.downOrg: Move the subtree, the item or the table row down
org.shiftmeta.upOrg: Delete the table row
org.shiftmeta.downOrg: Insert a table row above
org.table.insert.row.belowOrg: Insert a table row below
org.open.lineOrg: Open a line, or in a table insert a row
org.outline.pathOrg: Show the outline path of the entry at the cursor
org.table.next.fieldOrg: Go to the next table field, making a row after the last
org.table.previous.fieldOrg: Go to the previous table field
org.table.hlineOrg: Insert a rule below the table row
org.table.hline.aboveOrg: Insert a rule above the table row
org.table.hline.moveOrg: Insert a rule below the table row and go below it
org.table.blank.fieldOrg: Blank the table field
org.sortOrg: Sort the entries, the items or the table rows
org.sparse.treeOrg: Show a sparse tree
org.revealOrg: Show the context of the cursor
org.reveal.siblingsOrg: Show the context of the cursor, each level with its children
org.reveal.treeOrg: Show the whole tree of the cursor's parent
org.cut.subtreeOrg: Cut the subtree
org.copy.subtreeOrg: Copy the subtree
org.paste.subtreeOrg: Paste the subtree
org.yankOrg: Yank, a subtree at its level
org.refileOrg: Refile the entry
org.refile.copyOrg: Copy the entry to a refile target
org.refile.gotoOrg: Go to a refile target
org.refile.goto.lastOrg: Go to where the last refile put its entry
org.add.noteOrg: Add a note to the entry
org.babel.tangleOrg: Tangle the file's code blocks
org.babel.detangleOrg: Put the code of a tangled file back into its blocks
org.babel.executeOrg: Evaluate the code block or call at the cursor through Emacs
org.babel.execute.bufferOrg: Evaluate the file's code blocks through Emacs
org.babel.execute.subtreeOrg: Evaluate the subtree's code blocks through Emacs
org.babel.remove_resultOrg: Remove the results of the code block at the cursor
org.heading.nextOrg: Move to the next heading
org.heading.previousOrg: Move to the previous heading
org.heading.forwardOrg: Move to the next heading of the same level
org.heading.backwardOrg: Move to the previous heading of the same level
org.heading.upOrg: Move to the parent heading
org.link.nextOrg: Move to the next link
org.link.previousOrg: Move to the previous link
org.beginning.of.lineOrg: Move to the start of the headline's title
org.end.of.lineOrg: Move to the end of the headline's title
org.kill.lineOrg: Kill the headline's text to the tags, or the tags
org.gotoOrg: Go to a heading of the file
org.footnote.actionOrg: Make a footnote, or go between a footnote and its definition
org.footnote.menuOrg: Sort, renumber, normalize or delete footnotes
org.toggle.itemOrg: Turn the line into an item, or the item into a line
org.toggle.headingOrg: Turn the line into a heading, or the heading into a line
org.toggle.commentOrg: Toggle the COMMENT keyword of the heading
org.emphasizeOrg: Insert emphasis markers
org.structure.templateOrg: Insert a block (structure template)
org.drawer.insertOrg: Insert a drawer
org.subtree.cloneOrg: Clone the subtree, shifting its dates
org.table.copy.downOrg: Copy the field down to the next row
org.table.sumOrg: Sum the numbers of the table column
org.table.field.infoOrg: Show the references of the table field
org.table.createOrg: Insert an empty table
org.table.importOrg: Import a file as a table
org.table.exportOrg: Export the table to a file
org.plot.gnuplotOrg: Plot the table with gnuplot
org.table.ascii.plotOrg: Draw the column at the cursor as bars
org.babel.nextOrg: Move to the next code block
org.babel.previousOrg: Move to the previous code block
org.babel.gotoOrg: Go to a named code block
org.babel.lob.ingestOrg: Add the file's named code blocks to the Library of Babel
org.block.nextOrg: Move to the next block
org.block.previousOrg: Move to the previous block
org.edit.specialOrg: Edit the block in a file of its own
org.narrow.subtreeOrg: Narrow to the subtree: it in a file of its own
org.narrow.blockOrg: Narrow to the block: it in a file of its own
org.narrow.widenOrg: Widen: the narrowed file written back and closed
org.tree.indirectOrg: Show the subtree in a file of its own
org.table.edit.fieldOrg: Edit the table field in a file of its own
org.crypt.encryptOrg: Encrypt the entry
org.crypt.decryptOrg: Decrypt the entry
org.crypt.encrypt.allOrg: Encrypt the entries tagged crypt
org.crypt.decrypt.allOrg: Decrypt the encrypted entries
org.columnsOrg: Column view
org.link.previewOrg: Preview the images of links
org.latex.previewOrg: Preview LaTeX fragments
org.columns.quitOrg: Column view: quit
org.columns.redoOrg: Column view: recompute
org.columns.editOrg: Column view: edit the value
org.columns.nextOrg: Column view: the next allowed value
org.columns.previousOrg: Column view: the previous allowed value
org.columns.showOrg: Column view: show the value
org.columns.allowedOrg: Column view: edit the allowed values
org.columns.todoOrg: Column view: change the TODO state
org.columns.toggleOrg: Column view: toggle a checkbox, or quit
org.columns.move.leftOrg: Column view: move the column left
org.columns.move.rightOrg: Column view: move the column right
org.columns.deleteOrg: Column view: delete the column
org.columns.narrowOrg: Column view: make the column narrower
org.columns.widenOrg: Column view: make the column wider
org.columns.row.upOrg: Column view: move the entry up
org.columns.row.downOrg: Column view: move the entry down
org.timer.startOrg: Start the relative timer
org.timer.insertOrg: Insert the timer's value
org.timer.itemOrg: Insert a list item with the timer's value
org.timer.pauseOrg: Pause or continue the timer
org.timer.stopOrg: Stop the timer
org.timer.setOrg: Set a countdown timer
org.export.dispatchOrg: Export the file through Emacs
org.table.toggle.column.widthOrg: Shrink or expand the table column
org.table.recalculateOrg: Recalculate the table
org.table.recalculate.lineOrg: Recalculate the table's current line
org.table.iterateOrg: Recalculate the table until it does not change
org.table.formula.debuggerOrg: Turn the formula debugger on or off
org.openOrg: Open the link or thing at the cursor
org.link.storeOrg: Store a link to the place at the cursor
org.link.insertOrg: Insert a link, or edit the one at the cursor
org.link.insert.lastOrg: Insert the last stored link
org.link.insert.allOrg: Insert all stored links
org.id.createOrg: Create an ID for the entry
org.archive.subtreeOrg: Archive the subtree
org.archive.siblingOrg: Archive the subtree under its Archive sibling
org.archive.tagOrg: Toggle the ARCHIVE tag
org.archive.defaultOrg: Archive with the default command
org.archive.confirmOrg: Archive with the default command, once confirmed
org.archive.doneOrg: Archive the subtrees without open TODO items
org.archive.tag.doneOrg: Tag the subtrees without open TODO items as archived
org.captureOrg: Capture
org.capture.finishOrg: Capture: finish
org.roam.node.findOrg: Roam: find a node
org.roam.node.insertOrg: Roam: insert a link to a node
org.roam.captureOrg: Roam: capture to a node
org.roam.node.randomOrg: Roam: visit a random node
org.roam.dailies.capture.todayOrg: Roam: capture to today's daily note
org.roam.dailies.goto.todayOrg: Roam: go to today's daily note
org.roam.dailies.capture.tomorrowOrg: Roam: capture to tomorrow's daily note
org.roam.dailies.goto.tomorrowOrg: Roam: go to tomorrow's daily note
org.roam.dailies.capture.yesterdayOrg: Roam: capture to yesterday's daily note
org.roam.dailies.goto.yesterdayOrg: Roam: go to yesterday's daily note
org.roam.dailies.capture.dateOrg: Roam: capture to the daily note of a date
org.roam.dailies.goto.dateOrg: Roam: go to the daily note of a date
org.roam.dailies.goto.nextOrg: Roam: go to the next daily note
org.roam.dailies.goto.previousOrg: Roam: go to the previous daily note
org.roam.dailies.find.directoryOrg: Roam: open the directory of the daily notes
org.roam.buffer.toggleOrg: Roam: show or hide the org-roam buffer
org.roam.buffer.dedicatedOrg: Roam: show the org-roam buffer of a node
org.roam.buffer.refreshOrg: Roam: refresh the org-roam buffer
org.roam.alias.addOrg: Roam: add an alias
org.roam.alias.removeOrg: Roam: remove an alias
org.roam.tag.addOrg: Roam: add tags
org.roam.tag.removeOrg: Roam: remove tags
org.roam.ref.addOrg: Roam: add a reference
org.roam.ref.removeOrg: Roam: remove a reference
org.roam.ref.findOrg: Roam: find a node by a reference
org.roam.promoteOrg: Roam: make the file's one top headline the file's node
org.roam.demoteOrg: Roam: make the file's node a headline of its own
org.roam.refileOrg: Roam: refile to a node
org.roam.extractOrg: Roam: extract the subtree to a file of its own
org.roam.graphOrg: Roam: show the graph of the nodes
org.journal.new.entryOrg: Journal: new entry
org.journal.new.date.entryOrg: Journal: new entry for a date
org.journal.new.scheduled.entryOrg: Journal: new entry for a day to come
org.journal.next.entryOrg: Journal: next entry
org.journal.previous.entryOrg: Journal: previous entry
org.journal.open.currentOrg: Journal: open the current file
org.journal.searchOrg: Journal: search between two dates
org.journal.search.foreverOrg: Journal: search every entry
org.journal.search.futureOrg: Journal: search the entries to come
org.journal.search.calendar.weekOrg: Journal: search the calendar's week
org.journal.search.calendar.monthOrg: Journal: search the calendar's month
org.journal.search.calendar.yearOrg: Journal: search the calendar's year
org.journal.read.entryOrg: Journal: the entry of the calendar's day
org.journal.display.entryOrg: Journal: show the entry of the calendar's day
org.journal.mark.entriesOrg: Journal: mark the days with an entry in the calendar
org.journal.search.future.scheduledOrg: Journal: the TODO entries to come
org.journal.schedule.viewOrg: Journal: the entries to come with a date
org.journal.rescheduleOrg: Journal: move the entry to come to another day
org.capture.abortOrg: Capture: abort
org.capture.refileOrg: Capture: refile the entry
org.timestamp.upOrg: Increase the part of the timestamp at the cursor
org.timestamp.downOrg: Decrease the part of the timestamp at the cursor
org.date.laterOrg: Move the date one day later
org.date.earlierOrg: Move the date one day earlier
org.date.later.hoursOrg: Agenda: move the time one hour later
org.date.earlier.hoursOrg: Agenda: move the time one hour earlier
org.date.later.minutesOrg: Agenda: move the time later by the rounding minutes
org.date.earlier.minutesOrg: Agenda: move the time earlier by the rounding minutes
org.shift.upOrg: Increase the timestamp part, raise the priority, or go to the previous item
org.shift.downOrg: Decrease the timestamp part, lower the priority, or go to the next item
org.shift.leftOrg: Move the date a day earlier, or cycle the TODO state or the list's bullets backward
org.shift.rightOrg: Move the date a day later, or cycle the TODO state or the list's bullets forward
org.scheduleOrg: Schedule the entry
org.deadlineOrg: Set the deadline of the entry
org.schedule.removeOrg: Remove the scheduled date of the entry
org.deadline.removeOrg: Remove the deadline of the entry
org.schedule.delayOrg: Delay the scheduled date until a day
org.deadline.warningOrg: Warn of the deadline from a day
org.timestamp.insertOrg: Insert or change a timestamp
org.timestamp.insert.inactiveOrg: Insert or change an inactive timestamp
org.timestamp.changeOrg: Change the timestamp at the cursor
org.timestamp.overlays.toggleOrg: Show timestamps in the custom formats, or not
org.goto.calendarOrg: Show the calendar at the date of the line
org.calendar.day.laterOrg: Date prompt: one day later
org.calendar.day.earlierOrg: Date prompt: one day earlier
org.calendar.week.laterOrg: Date prompt: one week later
org.calendar.week.earlierOrg: Date prompt: one week earlier
org.calendar.month.laterOrg: Date prompt: one month later
org.calendar.month.earlierOrg: Date prompt: one month earlier
org.calendar.year.laterOrg: Date prompt: one year later
org.calendar.year.earlierOrg: Date prompt: one year earlier
org.calendar.scroll.laterOrg: Date prompt: show the next months
org.calendar.scroll.earlierOrg: Date prompt: show the previous months
org.calendar.todayOrg: Date prompt: go to today
org.calendar.selectOrg: Date prompt: take the day at the cursor
org.calendar.typeOrg: Date prompt: type the date
org.calendar.timeOrg: Date prompt: pick the time, or go back to the day
org.calendar.cancelOrg: Date prompt: cancel
org-lsp.cycleOrg: Cycle the visibility of the subtree, block or drawer at the cursor
org-lsp.helpOrg: Show the keys
org-lsp.cycleGlobalOrg: Cycle the visibility of the whole file

How they behave#

Questions are asked in VS Code's own way:

  • A date (scheduling, a deadline, Shift+J in the agenda) opens Emacs's calendar beside the file, with the keys under In the date prompt. i there asks for the date in an input box, with the timestamp the answer makes shown as you type. t picks a time: a Time: line shows it, Shift+Left and Shift+Right choose the hour or the minutes, Shift+Up and Shift+Down move it up or down (the minutes by org_time_stamp_rounding_minutes), and t again goes back to the days, keeping the time.
  • One key, such as a TODO keyword with a key or a capture template, is picked from a list that shows each choice's key ([t] TODO). Type the key (or its name, as SPC) and press Enter; other text narrows the list.
  • A choice from a list, such as a refile target, is picked from a list.
  • Text, such as a capture prompt, is typed in an input box. It starts with what Emacs's minibuffer starts with (a headline's tags, the time of a timestamp being changed), the cursor after it.
  • A state note (a keyword with @, as WAIT(w@)) is written in a note buffer that opens like a capture buffer, as Emacs's *Org Note*: Ctrl+C Ctrl+C stores it, Ctrl+C Ctrl+K changes the state without it.

What Emacs says when a command is done (Priority of current item set to B, Scheduled to <2026-05-22 Fri>) shows as a notification, or in the status bar with "org-lsp.messages": "statusBar"; a command that cannot run says why in a warning.

VS Code passes no count to a key: each command moves by one step, unless the key gives a count of its own (below).

Changing them#

Open Preferences: Open Keyboard Shortcuts (JSON) and add entries to keybindings.json. Each binding needs a when clause that says where it applies:

// Org files
"when": "editorTextFocus && editorLangId == 'org'"
// The agenda
"when": "editorTextFocus && editorLangId == 'org-agenda'"
// The date prompt
"when": "editorTextFocus && editorLangId == 'org-date'"
// A capture buffer
"when": "editorTextFocus && editorLangId == 'org' && resourceFilename =~ /^CAPTURE-/"

To add a key, bind it to the command's name, from the second column of the tables above:

[
  { "key": "ctrl+alt+a", "command": "org.agenda.dispatch" },
  { "key": "ctrl+alt+c", "command": "org.capture" },
  { "key": "alt+t", "command": "org.todo", "when": "editorTextFocus && editorLangId == 'org'" },
  { "key": "alt+up", "command": "org.shift.up", "when": "editorTextFocus && editorLangId == 'org'" },
  { "key": "alt+down", "command": "org.shift.down", "when": "editorTextFocus && editorLangId == 'org'" },
  { "key": "alt+left", "command": "org.shift.left", "when": "editorTextFocus && editorLangId == 'org'" },
  { "key": "alt+right", "command": "org.shift.right", "when": "editorTextFocus && editorLangId == 'org'" },
  { "key": "alt+s", "command": "org.schedule", "when": "editorTextFocus && editorLangId == 'org'" }
]

The first two have no when, so they work anywhere, as Emacs's C-c a and C-c c do. With "org-lsp.keys": "custom" these are the only keys there are.

"args": { "count": N } passes Emacs's prefix argument: C-u is 4, C-u C-u 16, C-u C-u C-u 64. For example, the images of the whole file, and none:

[
  { "key": "ctrl+c ctrl+x v", "command": "org.link.preview", "args": { "count": 16 }, "when": "editorTextFocus && editorLangId == 'org'" },
  { "key": "ctrl+c ctrl+x shift+v", "command": "org.link.preview", "args": { "count": 64 }, "when": "editorTextFocus && editorLangId == 'org'" }
]

To remove a default key, add the same key and command with a - in front of the command. To change one, remove it and add the new key:

[
  { "key": "shift+j", "command": "-org.agenda.goto.date" },
  { "key": "ctrl+j", "command": "org.agenda.goto.date", "when": "editorTextFocus && editorLangId == 'org-agenda'" }
]

The same can be done in Preferences: Open Keyboard Shortcuts: search for org., then right-click a binding to change or remove it.