Concise manual for these macOS dotfiles.
.zshrc: shell aliases plusfzf,zoxide, andezasetup..wezterm.lua: WezTerm panes, tabs, workspaces, launcher, quick-select, and Neovim pane handoff.nvim/: Neovim setup for LSP, Telescope, Neo-tree, formatting, linting, debugging, tests, sessions, and custom UI.
The Neovim config started from theovim and is now customized. WezTerm and Neovim both use GitHub Dark Default.
.
├── .zshrc
├── .wezterm.lua
├── install.sh
└── nvim
├── init.lua
├── lazy-lock.json
├── lua/{plugins,ui}
├── after/ftplugin
└── doc
Run from the repo root:
brew bundle --file Brewfile
./install.shThe Brewfile installs the Homebrew-managed CLI tools, apps, and fonts. The installer links ~/.zshrc to .zshrc, backs up an existing ~/.zshrc, installs Oh My Zsh helpers, and keeps a few shell-tool/font checks for direct installer usage.
.zshrc enables:
fzf --zshfor fuzzy history, file, and completion widgetszoxidethroughzfor frecent directory jumpingezaaliases:ls,ll,la,lt
Defaults:
- shell:
zsh -l - theme:
GitHub Dark Default - variants:
github,github-light - font fallback: JetBrains Mono Nerd Font, IosevkaTerm Nerd Font, Symbols Nerd Font Mono, Menlo
- 90% opacity, macOS blur, resize-only decorations
- status: workspace/key table/leader on the left, cwd/process/time on the right
- inactive panes are dimmed
Leader key: Ctrl+a. Press it, then press a command key within 1000 ms.
- Panes:
Ctrl+a ssplit vertically,Ctrl+a vsplit horizontally,Ctrl+a h/j/k/lmove,Ctrl+a qclose,Ctrl+a zzoom,Ctrl+a orotate,Ctrl+a rresize mode. - Resize mode:
h/j/k/lresize,EscorEnterexits. - Neovim-aware movement:
Alt+h/j/k/lmoves across WezTerm panes or hands off to Neovim;Alt+Arrowresizes panes. - Tabs:
Ctrl+a tnew tab,Ctrl+a [/]previous/next,Ctrl+a nnavigator,Ctrl+a erename,Ctrl+a 1..9jump. - Tab moving:
Ctrl+a menters move mode;h/jmoves left,k/lmoves right,EscorEnterexits.Ctrl+a Shift+{/Shift+}also move the current tab. - Workspaces:
Ctrl+a wfuzzy launcher,Ctrl+a pswitch/create workspace from current cwd,Ctrl+a Shift+pprompt for a workspace name from current cwd. - Copy/search/tools:
Ctrl+a ccopy mode,Ctrl+a fquick-select paths/hashes/URLs/tokens,Ctrl+a /search scrollback,Ctrl+a Spacecommand palette.
Launch menu entries include Home, Dotfiles, and Neovim Config.
Suggested flow: open WezTerm, jump with Ctrl+a w, create a project workspace with Ctrl+a p, split with Ctrl+a s/v, and move between terminal panes and Neovim with Alt+h/j/k/l.
Entry point: nvim/init.lua. Plugins are in nvim/lua/plugins; custom UI modules are in nvim/lua/ui.
Main features:
lazy.nvim, transparent theme setup, custom dashboard/statusline/tabline- Mason-backed LSP servers, format-on-save, optional linting
- Telescope search and Neo-tree file explorer
- DAP debugging, terminal-based tests, persistent undo, session restore
Core behavior:
- relative numbers, cursor line/column, mouse, true color, visible whitespace
- smart case search,
inccommand=split - vertical splits right, horizontal splits below
Escclears search highlightingj/k,n/N, andCtrl+d/ukeep movement centered/ergonomic
- General:
Escclears search,Esc Escleaves terminal mode,Ctrl+sfixes nearest spelling suggestion in insert mode. - Clipboard/selection:
<leader>aselect all,<leader>yyank visual selection to system clipboard,<leader>pshows registers in normal mode or replaces visual selection without overwriting the unnamed register. - Buffers:
[b/]bprevious/next,<leader>bprepare:b,<leader>kprepare:bdelete. - Tabs/windows:
gt/gTnext/previous tab,{count}gtjump to tab,Ctrl+h/j/k/lmove or create splits,Alt+h/j/k/lmove across Neovim/WezTerm,Alt+Arrowresize,Ctrl+w +/-/</>resize Vim windows. - Terminals:
<leader>ttor:Floaterminaltoggles the floating terminal,<leader>tbopens a bottom terminal,<leader>tropens a right terminal. - Commands:
:TrimWhitespaceremoves trailing whitespace;:CDsets local cwd to the current file directory. - Neo-tree:
<leader>ntoggle/reveal,Enteropen,topen in new tab,qclose,?help,Ctrl+h/lmove between tree and editor,Ctrl+w wcycle windows. - Telescope:
<leader>sffiles,<leader>sglive grep,<leader>/current buffer,<leader><leader>buffers,<leader>s.recent files,<leader>srresume,<leader>snNeovim config,<leader>fbfile browser. - More Telescope:
<leader>shhelp,<leader>skkeymaps,<leader>sspickers,<leader>swcurrent word,<leader>sddiagnostics,<leader>s/grep open files. - Git:
<leader>gf/gc/gsGit files/commits/status,<leader>ggNeogit,<leader>gllog graph,<leader>gb/gBfull/inline blame,<leader>gphunk preview,<leader>gdbuffer diff,<leader>go/gqopen/close Diffview,<leader>gh/gHfile/repo history,]h/[hnext/previous hunk. - Diagnostics/LSP:
[d/]dprevious/next diagnostic,<leader>ediagnostic float,<leader>qlocation list,gd/gr/gI/gDdefinition/references/implementation/declaration,<leader>Dtype definition,<leader>ds/wssymbols,<leader>rnrename,<leader>cacode action,<leader>thinlay hints. - Formatting/linting:
<leader>For<leader>cfformat buffer,<leader>cllint current buffer. - Debugging:
<leader>dbbreakpoint,<leader>dBconditional breakpoint,<leader>dccontinue/start,<leader>di/do/dOstep into/over/out,<leader>drREPL,<leader>dtterminate,<leader>duUI,<leader>dllast config,<leader>dn/dNnearest/last Go test. - Tests/sessions:
<leader>tn/tf/ts/tl/tvnearest/file/suite/last/output;<leader>wr/wl/wdrestore cwd/last session or stop saving sessions. - Completion/snippets:
Ctrl+n/jnext,Ctrl+p/kprevious,Ctrl+eabort,Ctrl+b/fscroll docs,Ctrl+yorEnterconfirm,Ctrl+Spacetrigger,Tab/Shift+Tabitem or snippet jump,Ctrl+l/hsnippet forward/back. - Editing helpers:
gccomments,sa/sd/sr/sf/sF/sh/snsurrounds,a/itextobjects frommini.ai, autopairs, colorizer, TODO jumps with]t/[t. - Treesitter selection:
Ctrl+Spacestart/expand,Ctrl+sexpand scope,Alt+Spaceshrink.
- Managed LSP servers:
bashls,clangd,gopls,helm_ls,jdtls,lua_ls,pyright,rust_analyzer,taplo,texlab,yamlls. - Configured linters:
shellcheck,ruff,luacheck,markdownlint. - DAP tools installed through Mason:
codelldb,delve,debugpy. - Java uses
nvim-javafor jdtls, DAP, test runner, build helpers, runtime switching, and refactors. - Treesitter enables highlighting, indentation, and incremental selection for common shell, C/C++, Go, Java, JSON, LaTeX, Lua, Markdown, Python, Rust, TOML, Vim, and YAML files.
nvim/after/ftpluginadds spell checking for Markdown/TeX/text,:RunPython,:RunC,:RunCpp,:RunLua, and Java indentation defaults.
Useful Java commands:
:JavaDap config:JavaTest runCurrentClass:JavaTest runCurrentMethod:JavaTest debugCurrentClass:JavaTest debugCurrentMethod:JavaBuild buildWorkspace:JavaSettings changeRuntime:JavaRefactor extractVariable:JavaRefactor extractMethod
Suggested flow: open a project with nvim ., restore with <leader>wl, browse with <leader>n or search with <leader>sf/<leader>sg, use LSP actions, save for format-on-save, run <leader>cl when needed, test with <leader>tn/<leader>tf, debug with <leader>dc, and move across terminal/editor panes with Alt+h/j/k/l.
Homebrew dependencies are managed in Brewfile. Run:
brew bundle --file BrewfileNotes:
- Run
xcode-select --installbeforebrew bundleon a new Mac. - After installing
rustup-init, runrustup default stableandrustup component add rustfmtif you use Rust formatting. - Go formatters that are usually installed outside Homebrew:
go install mvdan.cc/gofumpt@latestandgo install golang.org/x/tools/cmd/goimports@latest. - Treesitter downloads newly added parsers on first start after updates.
nvim-javainstalls jdtls, the Java debug adapter, and test bundles through Mason on first use.
Main files to edit: