Keybindings

Conventional chords, the leader palette, and Noteside's vim subset, all first-class.

Every command in Noteside is a keystroke away: drive it with the conventional chords you already know, or with vim. The chords are always on, so they work even with vim enabled. Every command below comes from one table, so its chord, its ex-command, and its leader key never drift apart. Prefer the mouse? Everything here is also clickable, and the ⌘⇧P command palette has a titlebar button and lists it all.

Three places to search

These are easy to mix up:

  • ⌘P finds files & content across the notebook (fuzzy)
  • ⌘⇧F searches note contents (grep, with a preview pane)
  • ⌘F finds in the current note (toggles the in-note search bar)

See Search for the difference.

Conventional chords

Don't use vim? Turn it off (set vim = off in your ~/.notesiderc, or the settings panel) and these are all you need. They stay available with vim on, too.

ChordCommand
⌘PFind files & content
⌘⇧PCommand palette (searchable)
⌘⇧FSearch note contents (grep)
⌘FFind in note
F3 / ⇧F3Next / previous match
⌘LLeader menu
⌘OSwitch notebook
⌘NNew note
⌘SSave note
⌘WClose note
⌘⇧TReopen closed note
⌘J / ⌘KNext / previous note
⌥↵Open URL under cursor
⌘BToggle sidebar
⌘= / ⌘-Editor font larger / smaller
⌘0Editor font reset
⌘⇧= / ⌘⇧-Interface larger / smaller
⌘,Settings
⌘/Keyboard shortcuts

is Cmd on macOS, Ctrl elsewhere. ⌘L opens the same which-key menu vim users get with <Space>; see the leader palette below. A few commands ship with no chord at all (interface size reset, the note and folder operations). Run those from ⌘⇧P, or bind a key to them.

Forgot one? ⌘/ opens the cheatsheet, which also edits them (see Editing shortcuts below). Or remap with bind <chord> <command> in ~/.notesiderc; see Configuration.

Vim

Vim mode is a hand-built subset, not a full emulation. It covers the navigation and the everyday edit grammar, meaning operators, motions, text objects, and ., wired straight into the block editor. Turn it on with set vim = on in ~/.notesiderc, or in Settings → Keys.

Modes. Normal, insert, and visual. v is charwise, V linewise; in visual mode o swaps the ends, v/V switch flavor, and the same key (or Esc) leaves. Selecting text with the mouse drops you into visual mode too. The cursor sits on a character in normal mode, the way vim's does: $ lands on the last one, l stops there, and Esc from insert steps back onto what you just typed.

Motions. h j k l w b e 0 ^ $ gg G { } %, all count-aware (3w, 5j). f t F T jump to a character on the line; ; and , repeat that jump forward and backward. 5G (or :5) goes to the 5th top-level block. Enter and Backspace move like j and h. zz / zt / zb scroll the cursor line to the middle / top / bottom. Ctrl-d / Ctrl-u scroll half a page and Ctrl-f / Ctrl-b a full one, macOS only, since everywhere else Ctrl is the chord modifier.

Operators. d delete, c change, y yank, > / < shift. Each takes any motion or text object, with counts on either side (2d3w is six words). Doubling an operator makes it linewise: dd cc yy >> <<. The shorthands are there too: D C S Y s x X. cw changes to the end of the word without eating the blank after it, exactly as vim does.

Text objects. iw / aw (word), ip (the block), i" i' i` (quotes), and i( i[ i{ i< (bracket pairs, where ib / iB and the closing brackets work as aliases). a instead of i includes the delimiters. So ciw, di", da(, yi{.

Edits. p / P paste, r replaces a character, ~ toggles case, J joins lines, u / Ctrl-r undo and redo, . repeats the last change, including the text you typed after a cw or an o. Everything shares one unnamed register. An insert session is one undo step: cw + typing + Esc, then u, brings the whole word back.

Visual. d/x, c/s, y, p (replace the selection), > / <, ~ u U (toggle / lower / upper), J, and iw/i(/… to grow the selection to an object.

The line-unit rule. Linewise commands act on what the line is: dd deletes a heading, a list item, a table row, a source line inside a code block, or a paragraph inside a quote. o / O open a sibling item in a list and a new row in a table. >> / << nest and unnest list items and indent code lines by tab-width.

Search. / opens the same find bar as ⌘F; n / N step through matches, * / # search the word under the cursor, and :noh clears the highlights.

The rest. : opens the ex bar, <Space> the leader palette, and gx follows the link under the cursor. Ctrl-[ works as Esc. The status bar echoes a pending count or operator (2d, ci) while you type a command.

Leaving insert mode. imap jj <Esc> in ~/.notesiderc (or the "Leave insert with" field in Settings → Keys) drops you back to normal mode when you type jj, removing the keys as you go. This is the one mapping directive that actually applies.

Not in the subset

Deliberately out, because they need recording or register plumbing the editor doesn't have: named registers, macros, marks, replace mode R, blockwise visual (Ctrl-v), gu / gU, and :s. A . after an insert that spanned several lines says it can't repeat that. There are no :set options either; settings live in ~/.notesiderc and the settings panel. Your nmap / vmap lines round-trip through the config file verbatim but are not applied, and applying a config that contains them says so in the toast.

Ex commands

The : bar exact-matches the names below and runs the same command the chord would.

Note

CommandDoes
:w :writeSave note
:q :quitClose note
:wq :x :xitSave & close note
:newNew note (in the open note's folder)
:rmDelete note (asks to confirm)
:dup :duplicateDuplicate note
:renameRename note
:pin / :unpinPin / unpin (pinned notes sort to the top)
:revealReveal the file in Finder / Explorer
:reopenReopen the last closed note
:followOpen the URL under the cursor
:NJump to the Nth top-level block (e.g. :42)

Folders

CommandDoes
:mv :moveMove the note to a folder (opens a picker)
:mkdir :folderNew folder (a/b nests)
:fold :collapseCollapse / expand the open note's folder
:foldallCollapse all folders
:unfoldall :expandallExpand all folders
:renamefolderRename the open note's folder
:rmdirDelete that folder and its notes (asks to confirm)

The folder commands act on the open note's folder. Empty folders are managed from their header in the sidebar; see Folders.

Tables

CommandDoes
:addrowAdd a row below
:delrowDelete the row
:addcolAdd a column right
:delcolDelete the column

These need the cursor inside a table; the floating table toolbar runs the same four.

App

CommandDoes
:find :filesFuzzy file & content finder
:grepSearch note contents
:noh :nohlsearchClear search highlights
:commandsSearchable command palette
:paletteLeader menu (the <Space> which-key palette)
:notebook :notebooks :nbSwitch, open, or create a notebook
:navToggle the sidebar
:theme :colorscheme :coloTheme picker
:settings :prefsSettings panel
:configEdit ~/.notesiderc
:helpKeyboard shortcuts

Mouse gestures in the sidebar

Every note command has a pointer twin. Right-click a note (or use the button that appears when you hover the row) for Open, Pin/Unpin, Reveal in Finder/Explorer, Duplicate, Move to folder…, Rename…, and Delete. Delete, Rename and Move open a small confirmation or input dialog. Folder headers have their own menu: New note here, New subfolder…, Rename folder…, Collapse all, Expand all, and Delete folder. You can also drag a note onto a folder header to move it there, which Noteside asks you to confirm, or onto another note to group both into a new folder, which it asks you to name. A row also reveals a pin toggle on hover, double-click renames, and the sidebar's right edge drags to resize (double-click the edge to reset). See Folders for the details.

The <Space> leader palette

Tap <Space> in normal mode, or ⌘L anywhere, vim or not, to open a which-key menu. Then press a single key:

KeyCommand
<Space> fFind files & content
<Space> gSearch note contents
<Space> oSwitch notebook
<Space> nNew note
<Space> mMove to folder…
<Space> qClose note
<Space> dDelete note
<Space> bToggle sidebar
<Space> ,Settings
<Space> tChange theme
<Space> cEdit ~/.notesiderc

Destructive entries ask first: y or confirms, n backs out, Esc closes the menu.

Discovering commands

Three surfaces help you find your way:

  • ⌘⇧P, the command palette. A searchable list of every command (also :commands).
  • ⌘L / <Space>, the which-key menu. The leader keys above, shown as a menu.
  • ⌘/, the cheatsheet. A searchable list of every chord and command. Type to filter it down.

Editing shortcuts

The ⌘/ cheatsheet doubles as a live keymap editor, with no config file needed. Open it (or Settings → Keys → Edit keys). It leads with a search box: type to filter the list (by command name, group, or :ex-command), then / (or Ctrl-n/Ctrl-p) to pick a command and:

  • Enter records a new chord. Press the keys; a clash is flagged inline, with Enter to replace and Esc to cancel. Shortcuts must include Cmd/Ctrl/Alt or use a function key so they cannot hijack ordinary typing, Tab, Enter, or cursor movement. While recording, Backspace unbinds the command instead; with an empty search box, Backspace unbinds the selected row outright.
  • on the selected row resets that command to its default; Reset all keys (footer) restores every default. Vim maps in ~/.notesiderc are left alone.

Changes apply instantly and persist to ~/.notesiderc as bind lines, so the file and the editor never drift.

Editing keys

A few keys belong to the editor rather than the command table: Tab in tables and lists, the / slash menu, and opening links (-click, gx, ⌥↵). See The editor.

On this page