Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Code and other files

n0te opens any text file, not just notes. Markdown files (.md) render as pages; everything else opens as code, in your monospace font with line numbers and syntax highlighting.

n0 src/main.rs:42          # at line 42
n0 src/main.rs:42:7        # file:line:col, as grep and compilers print it
n0 +42 src/main.rs         # the same, vim style
n0 -e +42 src/main.rs      # editing at line 42
n0 ~/.config/hypr/hyprland.lua

Paste a location from rg -n, a compiler error or a stack trace, and n0te opens it at that line.

Highlighting

Highlighting uses tree-sitter for bash, C, CSS, Go, HTML, JavaScript, JSON, Lua, Python, Rust, TOML, TypeScript, TSX and YAML. Smaller built-in highlighters cover Hyprland’s classic config, .conf, .ini, .desktop and .service files, diffs and markdown source. Shell dotfiles like .bashrc, .zshrc and PKGBUILD count as bash.

The colors come from your theme, mapped the way Omarchy maps them for Helix, so code in n0te looks like code in your editor.

Code blocks inside notes are highlighted the same way, by their fence’s language (```rust, ```sh).

Reading code

j kscroll a few lines
space b, gg Gpage down / up, top / bottom
wwrap long lines, or stop wrapping
/, n Nfind, next, previous
ycopy the whole file

Long lines don’t wrap until you ask with w.

Editing code

e, Enter or a double-click edits the whole file, with the caret on the first line in view (or, for a double-click, where you clicked). Highlighting catches up 200 ms after you stop typing. esc finishes. Saving works as for notes: automatic, atomic, and keeping the file’s mode, line endings and final newline.

When someone else changes the file while you’re editing (a git checkout, a formatter), n0te merges line by line. When the same lines changed in both places, it writes git-style conflict markers and stops autosaving until you’ve resolved them and pressed ctrl s. See Holds.

For bigger work, Edit in editor in the palette saves and opens the file in your editor (Omarchy’s omarchy-launch-editor).

Pipes and stdin

git log -1 | n0 -                # stdin
n0 <(git show HEAD:README.md)    # a pipe, read the same way
curl -s https://example.com/notes.md | n0 -

n0te reads the input into a private temporary file and renders it as markdown. Since that copy is deleted once read, an stdin window can’t be reloaded or opened in your editor.

Limits

  • Files up to 64 MB open. Larger ones show a short page saying so.
  • n0te opens text. A file that isn’t valid UTF-8, or that has NUL bytes in it (most binary files), shows a short page explaining why, and nothing is ever written to it.