Skip to content
tongsv1.1.0
GitHub
docsreferencekeybindings

Keybindings

Every key in the terminal app, screen by screen, followed by the desktop review map. The footer of each terminal screen shows its most used keys.

Key Action
CtrlP Open the command palette
? Show or hide the keybindings panel

These keys work on the inbox, the repository list and MR detail.

Key Action
q Quit from the inbox, or go back one screen
Esc Go back one screen (on the inbox, only from a repository’s inbox)
CtrlR Refresh the current screen; in the inbox, read the tab from the forge instead of the cache
o Open the current item in the browser (inbox and MR detail)
Key Action
1 Switch to the My Reviews tab
2 Switch to the My MRs tab
3 Switch to the All Open tab
m In All Open, load the next 100 reviews of each repository that has more (reaching the last row does the same)
s Cycle the sort order: updated, title, CI, author
r Open the repository list, or go back from a repository’s inbox
Enter Open MR detail for the selected row
Key Action
/ Filter repositories by name
f Cycle the forge filter: all, GitHub, GitLab
s Cycle the sort order: name, forge, host
Enter (in the filter) Keep the filter and move to the list
Enter (on the list) Open the inbox for the selected repository
Esc Close the filter and restore the full list, or go back
CtrlR Refresh the repository list
Key Action
1 Overview tab
2 Diff tab
3 Commits tab
4 Discussion tab
5 Pipeline tab
c Add a comment: a general comment from Overview, an inline one from Diff
ShiftA Approve (press twice to confirm)
ShiftU Remove your approval (press twice to confirm)
ShiftM Merge (press twice to confirm)
ShiftX Close (press twice to confirm)
CtrlY Copy the MR URL to the clipboard
CtrlG Start review mode, or open the review draft once one exists
CtrlN Cycle to the next recovered review draft for this MR
Key Action
j / k Move the cursor down / up
ShiftJ / ShiftK Extend the selection down / up
Ctrl + click Extend the selection to the clicked line
] / [ Jump to the next / previous comment
d Show or hide the discussion thread on the current line
r Reply to the discussion on the current line
ShiftR Resolve or unresolve the discussion (press twice)
c Comment on the current line or selection
F3 Suggest a change in your external editor
n / ShiftN Next / previous file
m Toggle the Markdown preview
v Toggle unified and split layout
e Expand the unchanged lines behind the gap row under the cursor, or collapse the expanded lines under the cursor and fold again the lines a fold showed
ShiftF Show the whole file, or go back to what you had expanded
Esc Clear the selection

In the split layout, h and l move focus between the old and new side.

The first e or ShiftF on a file reads it once from the forge. Collapsing with e reads nothing, and neither does expanding the same lines again. Expanded lines are read-only. See Expanding context.

F3 works on the new side only, and not on deleted lines. It opens the [editor] command, then $VISUAL, then $EDITOR, then the first of nvim, vim, vi or nano on your PATH.

Key Action
CtrlS Submit the comment
Esc Cancel (press twice once you have typed text)
F2 Open the text in your external editor

CtrlJ also submits.

CtrlG on MR detail starts review mode. Once a draft exists, the same key opens the review draft screen, where you submit, edit or discard it. See Review drafts.

Key Action
Esc Close (press twice to drop unsaved summary or verdict changes)
v Cycle the verdict: Comment, Approve, and Request changes on GitHub
CtrlS Submit the review
e Edit the selected draft comment
x Remove the selected draft comment (press twice to confirm)
ShiftD Discard the local review draft (press twice to confirm)
ShiftN Start a new revision (only when the draft is stale)
r Resume a paused submission

When a submission is interrupted and its outcome is unknown, three more keys reconcile it. Each one needs a second press to confirm.

Key Action
1 Retry the remaining, unconfirmed comments
2 Return the remaining comments to local editing
3 Mark the remaining comments as already submitted
Key Action
j / k Move between discussion cards
Enter Jump to the diff location of an inline discussion
r Reply to the focused discussion
ShiftR Resolve or unresolve (press twice)
f Cycle the filter: all, unresolved, resolved
] / [ Jump to the next / previous unresolved discussion

↑ and ↓ also move between cards.

Key Action
j / k Move between pipeline or job cards
Enter Open a pipeline’s jobs, or a job’s log
Esc Close the log search, or step back one level
ShiftC Cancel the pipeline or job (press twice)
ShiftR Retry the pipeline or job (press twice)
o Open the pipeline or job in the browser
F2 Open the job log in your external editor
/ Search the job log, with a live match count
n / ShiftN Jump to the next / previous match, wrapping around

↑ and ↓ also move between cards. See Pipelines and logs.

The keys work from anywhere on the review page, including with nothing focused. They stand down while a text field, an editable region, a select control or a modal dialog has the keyboard, and whenever you hold a modifier the key does not name.

The last column gives the terminal key for the same intent.

Key Desktop Terminal interface
c Comment on the focused row or the current selection c (diff viewer, MR detail)
Shift+C Open Your review Ctrl+G (MR detail)
] / [ Next / previous changed file, wrapping n / Shift+N (diff viewer)
n / p Next / previous thread or pending comment, wrapping ] / [ (diff viewer, next / previous comment)
r Reply to the focused thread r (diff viewer, discussion tab)
Ctrl+Enter / Cmd+Enter Primary composer action Ctrl+S (comment editor)
Esc Close the composer and keep the text Esc (comment editor, cancel)
v Cycle the verdict in Your review v (review draft)
  • Files and threads swap keys. The terminal uses ] and [ for the next and previous comment, and n and ShiftN for the next and previous file. The desktop swaps the pairs: ] and [ move between files, and n and p move between the threads and pending comments of the file on screen. This is the only reassignment in the table.
  • v picks the verdict. In the terminal diff viewer, v toggles the unified and split layout. The desktop has toolbar buttons for the layout, so v cycles the verdict, which is what it does on the terminal’s review draft screen.
  • ShiftC only opens. It opens Your review, the screen the terminal reaches with CtrlG. Once the drawer is on screen it owns the keyboard, and Esc closes it.
  • CtrlEnter presses the primary button. On macOS it is CmdEnter. It carries the same refusals as the button: an empty comment, or a draft held by a save, is refused just as a click would be.
  • Navigation wraps. n, p, ] and [ wrap at both ends. On a review with one changed file, ] and [ do nothing. n and p follow the page’s order, so in the Split layout they visit the old pane’s threads and pending comments before the new pane’s.
  • Your review owns the keyboard. While it is open, the diff’s keys stand down, even if the focus sits on the diff behind it. Esc there cancels an armed confirmation first, and otherwise closes the drawer and returns the focus to the button that opened it.
  • Esc keeps your text. It closes the in-diff composer and keeps what you typed, which comes back on the same review and the same line. Inside the composer it answers the nearest question first: an armed Discard review confirmation, then the More review actions menu, and only then the composer itself.