$ ls ~/tinkering/terminal

Terminal

Shell, Neovim and the config that never quite gets finished.

## emulator

  • Alacritty ↗

    Fast, GPU-rendered and deliberately small. Tabs and splits are tmux's job.

## multiplexer

  • tmux ↗

    Sessions that survive closing the window, and splits that open in the current directory.

    ›cat tmux.md

    Prefix moved to C-a, panes moved with h/j/k/l, and copy mode uses vi keys:

    set -g prefix C-a
    setw -g mode-keys vi
    bind h select-pane -L
    bind j select-pane -D
    bind k select-pane -U
    bind l select-pane -R
    bind '"' split-window -v -c "#{pane_current_path}"
    bind % split-window -h -c "#{pane_current_path}"

    Plugins via tpm: tmux-sensible, tmux-yank and the catppuccin theme.

## shell

  • zsh + starship ↗

    zsh with a starship prompt: git branch, runtime versions and nothing else in the way.

  • zoxide + fzf ↗

    `z play` jumps to the playground from anywhere; fzf fuzzy-finds history and files.

## editor

  • Neovim ↗

    Where most of the code gets written. A Lua config, managed with lazy.nvim.

    ›cat neovim.md

    The plugins that carry their weight:

    • telescope to find files and grep, with the native fzf sorter
    • harpoon to jump between the four files I'm actually working in
    • nvim-lspconfig + mason for language servers, nvim-cmp for completion
    • nvim-dap with the VS Code JS adapter for debugging Node
    • vim-fugitive and gitsigns for git, undotree for the undo history
    • trouble for diagnostics, zen-mode for writing

    A few remaps I'd miss:

    vim.keymap.set("i", "jj", "<Esc>")            -- leave insert mode
    vim.keymap.set("n", "<space>j", ":cnext<CR>") -- walk the quickfix list
    vim.keymap.set("n", "<space>k", ":cprev<CR>")
    vim.keymap.set("n", "<space>x", ":.lua<CR>")  -- run the current line as Lua

    Relative line numbers, no wrap, scrolloff = 8 and a persistent undo file. And yes, cellular-automaton is installed, for when the code deserves to melt.

## cli

  • ripgrep, fd, bat, jq ↗

    Faster, friendlier grep, find and cat, plus jq for every JSON response.

  • lazygit ↗

    Staging hunks and fixing up commits without remembering the flags.

  • GitHub CLI ↗

    PRs, checks and issues without leaving the terminal. Every PR on this site went through it.

-- INSERT --