Default key bindings

All of cy's default key bindings use actions defined in the global scope and therefore are easy to rebind should you so desire. For example, to assign cy/command-palette to another key sequence:

(key/bind :root ["ctrl+b" "p"] cy/command-palette)

Global

These bindings apply everywhere and can always be invoked.

Prefixed

All of the bindings in this table are prefixed by ctrl+a by default. You can change the prefix for cy's bindings using key/remap.

General

SequenceActionDescription
ctrl+paction/command-paletteOpen the command palette.
raction/reload-configReload the cy configuration.
dcy/detachDetach from the cy server.
qcy/kill-serverKill the cy server, disconnecting all clients.
Pcy/pastePaste the text in the copy buffer to the current pane.
pcy/replayEnter replay mode for the current pane.

Panes

SequenceActionDescription
Caction/jump-commandJump to the output of a command.
;action/jump-paneJump to a pane.
caction/jump-pane-commandJump to a pane based on a command.
kaction/jump-projectJump to a project.
:action/jump-screen-linesJump to a pane based on screen lines.
laction/jump-shellJump to a shell.
xaction/kill-current-paneKill the current pane.
naction/new-projectCreate a new project.
jaction/new-shellCreate a new shell.

Viewport

SequenceActionDescription
2action/margins-160Set size to 160 columns.
1action/margins-80Set size to 80 columns.
-action/margins-biggerIncrease margins by 5 columns.
+action/margins-smallerDecrease margins by 5 columns.
gaction/toggle-marginsToggle the screen's margins.

Unprefixed

These bindings are not prefixed by ctrl+a.

SequenceActionDescription
ctrl+laction/next-paneMove to the next pane.

Fuzzy finding

input/find has several key bindings that are not yet configurable, but are worth documenting.

SequenceDescription
ctrl+k or upMove up one option.
ctrl+j or downMove down one option.
enterChoose the option under the cursor.
ctrl+c or escQuit without choosing.

Replay mode

The actions found in the tables below are only valid in a pane that is in replay mode. Replay mode uses two isolated binding scopes that can be accessed by providing :time (for time mode) or :copy (for copy mode) to a key/bind call:

(key/bind :time ["ctrl+b"] (fn [&] (do-something)))

Time mode

SequenceActionDescription
g greplay/beginningGo to the beginning of the time range (in time mode) or the first line of the screen (in copy mode).
[ creplay/command-backwardIn time mode, jump to the moment in time just before the last command was executed. In copy mode, move the cursor to the first character of the last command that was executed.
] creplay/command-forwardIn time mode, jump to the moment in time just before the next command was executed. In copy mode, move the cursor to the first character of the next command.
Greplay/endGo to the end of the time range (in time mode) or the last line of the screen (in copy mode).
ctrl+creplay/quitQuit replay mode.
escreplay/quitQuit replay mode.
qreplay/quitQuit replay mode.
nreplay/search-againGo to the next match in the direction of the last search.
?replay/search-backwardSearch for a string backwards in time (in time mode) or in the scrollback buffer (in copy mode).
/replay/search-forwardSearch for a string forwards in time (in time mode) or in the scrollback buffer (in copy mode).
Nreplay/search-reverseGo to the previous match in the direction of the last search.
spacereplay/time-playToggle playback.
leftreplay/time-step-backStep one event backward in time.
rightreplay/time-step-forwardStep one event forward in time.

Copy mode

Copy mode is entered from time mode by triggering any form of movement, whether that be scrolling or manipulating the cursor.

SequenceActionDescription
yreplay/copyYank the selection into the copy buffer.
vreplay/selectEnter visual select mode.

Movements

Movements in copy mode are intended to be as close to vim as possible, but many more will be added over time.

SequenceActionDescription
g greplay/beginningGo to the beginning of the time range (in time mode) or the first line of the screen (in copy mode).
[ creplay/command-backwardIn time mode, jump to the moment in time just before the last command was executed. In copy mode, move the cursor to the first character of the last command that was executed.
] creplay/command-forwardIn time mode, jump to the moment in time just before the next command was executed. In copy mode, move the cursor to the first character of the next command.
jreplay/cursor-downMove cursor down one cell.
backspacereplay/cursor-leftMove cursor left one cell.
leftreplay/cursor-leftMove cursor left one cell.
ctrl+hreplay/cursor-leftMove cursor left one cell.
hreplay/cursor-leftMove cursor left one cell.
rightreplay/cursor-rightMove cursor right one cell.
lreplay/cursor-rightMove cursor right one cell.
spacereplay/cursor-rightMove cursor right one cell.
kreplay/cursor-upMove cursor up one cell.
Greplay/endGo to the end of the time range (in time mode) or the last line of the screen (in copy mode).
$replay/end-of-lineMove to the last character of the physical line. Equivalent to vim's $.
g $replay/end-of-screen-lineMove to the end of the screen line. Equivalent to vim's g$.
^replay/first-non-blankMove to the first non-blank character of the physical line. Equivalent to vim's ^.
g ^replay/first-non-blank-screenMove to the first non-blank character of the screen line. Equivalent to vim's g^.
ctrl+dreplay/half-page-downScroll the viewport half a page (half the viewport height) down.
ctrl+ureplay/half-page-upScroll the viewport half a page (half the viewport height) up.
;replay/jump-againRepeat the last character jump.
F re:.replay/jump-backwardJump to the previous instance of char on the current line.
f re:.replay/jump-forwardJump to the next instance of char on the current line.
,replay/jump-reverseRepeat the inverse of the last character jump.
T re:.replay/jump-to-backwardJump to the cell before char after the cursor on the current line.
t re:.replay/jump-to-forwardJump to the cell before char after the cursor on the current line.
g _replay/last-non-blankMove to the last non-blank character of the physical line. Equivalent to vim's g_.
g endreplay/last-non-blank-screenMove to the last non-blank character of the screen line. Equivalent to vim's g<end>.
g Mreplay/middle-of-lineMove to the middle of the physical line. Equivalent to vim's gM.
g mreplay/middle-of-screen-lineMove to the middle of the screen line. Equivalent to vim's gm.
qreplay/quitQuit replay mode.
ctrl+creplay/quitQuit replay mode.
escreplay/quitQuit replay mode.
downreplay/scroll-downScroll the viewport one line down.
upreplay/scroll-upScroll the viewport one line up.
nreplay/search-againGo to the next match in the direction of the last search.
?replay/search-backwardSearch for a string backwards in time (in time mode) or in the scrollback buffer (in copy mode).
/replay/search-forwardSearch for a string forwards in time (in time mode) or in the scrollback buffer (in copy mode).
Nreplay/search-reverseGo to the previous match in the direction of the last search.
homereplay/start-of-lineMove to the first character of the physical line. Equivalent to vim's 0.
0replay/start-of-lineMove to the first character of the physical line. Equivalent to vim's 0.
g homereplay/start-of-screen-lineMove to the first character of the screen line. Equivalent to vim's g0.
g 0replay/start-of-screen-lineMove to the first character of the screen line. Equivalent to vim's g0.
sreplay/swap-screenSwap between the alt screen and the main screen. This allows you to return to the pane's scrollback without quitting a program that is using the alternate screen, such as vim or htop.