Keymaps
The keys I use most. The
full list
is in the repo. Leader is Space.
Moving around
| Key | Does |
Ctrl+h/j/k/l | Move between Neovim splits and tmux panes, same keys |
Shift+l / Shift+h | Next / previous open file, in the order the tabs are shown |
Ctrl+p / Ctrl+n | Jump 8 lines up / down |
[[ / ]] | Start / end of the construct the cursor is in (treesitter) |
<leader>n / <leader>p | Next / previous occurrence of the word under the cursor |
s + letters + label | Jump anywhere on screen: type a few letters of the target, then the label that appears there |
S | Select the function, block or argument around the cursor |
[x | Jump up to the enclosing function, which stays pinned at the top while you scroll |
Editing
| Key | Does |
gsa / gsd / gsr | Add / delete / replace surrounding quotes and brackets — gsr"' turns "x" into 'x' |
<leader>fr | Find and replace across the whole project, with a preview of every change |
<leader>U | Undo history as a tree, including edits plain u can no longer reach |
<leader>ac | Send the file, or the selected code, to Claude in the next tmux pane |
Text objects
| Key | Selects |
aq / iq | A string with / without its quotes — any quote style, multi-line included |
af / if | A function, outer / inner |
ac / ic | A class, outer / inner |
Files and projects
| Key | Does |
<leader>- | Open lf with the cursor already on the current file |
<leader>sf / <leader>sg | Find files / live grep |
<leader>sp | Switch project — saves this one's session, restores the next one's |
<leader>sP | Bounce back to the previous project |
<leader>gw | Switch to another worktree of this repo, by branch |
<leader>gd | Review every uncommitted change, side by side, like a pull request |
<leader>gh | History of the current file, commit by commit |
Notes
A vault of plain Markdown files in ~/personal/notes, through obsidian.nvim. No Obsidian app needed.
| Key | Does |
<leader>on / <leader>ot | New note / today's daily note |
<leader>of / <leader>os | Find a note by name / search inside notes |
<leader>ob | Notes that link to this one |
[[ | Link to another note, with completion |
Notebooks
Jupyter notebooks open as Markdown with Python cells, run in a kernel, and save back to .ipynb with their outputs. Optional — one line in the config turns it off.
| Key | Does |
<leader>is | Set up everything a notebook needs, including a kernel for the project's own venv |
<leader>in | New notebook in the current folder, ready to run |
<leader>ir | Run the cell under the cursor, or the selection |
<leader>ia / <leader>iA | Run this cell and every one above / run all cells |
<leader>io / <leader>ih | Open / hide the output window |
Python REPL
| Key | Does |
<leader>rr | Toggle a Jupyter REPL in a split |
<leader>rs | Send the statement or block under the cursor and move to the next; in visual mode, send the selection |
<leader>ro | Kernel manager: start, stop, rename |
tmux
The prefix is Ctrl+Space. Press it twice to send a real Ctrl+Space to the program in the pane.
Sessions survive a reboot: they are saved every 10 minutes and come back when tmux starts, with Neovim reopened and Claude continuing its conversation.
| Key | Does |
prefix + f | Pick a project, and open it as a session with editor and terminal side by side |
prefix + Ctrl+f | Search the open sessions and switch to one |
prefix + Tab | Back to the last project (Shift-Tab: the last window) |
prefix + W | Open another branch as a worktree, in its own session with editor and Claude |
prefix + ; | Collapse Claude out of sight (it keeps running) / bring it back exactly as it was |
prefix + n | Today's note in a floating window, from any pane |
prefix + t / prefix + g | Floating scratch shell / lazygit |
prefix + - / prefix + _ | Split stacked / side by side |
Inside lf
| Key | Copies |
yn / ys | File name / name without extension |
yp / yd | Absolute path / containing directory |
yr | Path relative to the repo root |
i | Read the whole file in Neovim, read-only, with the usual keys — search, select, copy. q goes back |
y is a prefix there, so lf's built-in copy is yy.
af / ad create a file / directory, D
deletes for good, after listing what will go and asking
y/N. Clipboard commands are macOS-only for now
(pbcopy).