Startup: replace vim-unimpaired (2.5ms) with 2-line blank line insertion. 29 plugins now. All [q/]q, [e/]e, [x/]x mappings were already ours. Runtime: - ALE lint_delay=200ms, echo_delay=100ms — less thrashing during edits - LSP virtual_text_delay=200ms, highlight_delay=200ms, echo_delay=100ms - Disable gitgutter default mappings (map_keys=0) — we don't use them - Merge two BufReadPre large-file autocmds into one (single getfsize) - Remove redundant filetype detection autocmds (Vim 9.2 handles natively) |
||
|---|---|---|
| modules | ||
| tutor | ||
| .gitignore | ||
| .vimrc | ||
| get.sh | ||
| install.sh | ||
| LICENSE | ||
| QUICKSTART.md | ||
| README.md | ||
chopsticks
Vim config for people who ship code on any machine. Pure VimScript. No Node.js. Works over SSH.
curl -fsSL https://raw.githubusercontent.com/m1ngsama/chopsticks/main/get.sh | bash
Why
You SSH into a box. You need to edit code. You want LSP, fuzzy find, git integration, format-on-save — not a 20-minute setup ritual.
chopsticks gives you 29 plugins, 12 modules, and a sane config in one command. It degrades gracefully on TTY. It works the same on your MacBook and your Arch server.
What's in the box
| LSP | completion, go-to-def, hover, rename, code actions — pure VimScript |
| Lint + format | ALE runs black, prettier, gofmt, rustfmt on save |
| Fuzzy find | files, buffers, grep, tags, marks, commands — FZF |
| Git | status, diff, blame, push, pull, conflict markers |
| Zen mode | ,zen — Goyo + Limelight, distraction-free writing |
| Run file | ,cr — auto-detects language, runs it |
| TTY-aware | degrades gracefully on SSH, console, slow links |
Install
curl -fsSL https://raw.githubusercontent.com/m1ngsama/chopsticks/main/get.sh | bash
Or manually:
git clone https://github.com/m1ngsama/chopsticks.git ~/.vim
cd ~/.vim && ./install.sh
macOS (brew), Debian/Ubuntu (apt), Arch (pacman), Fedora (dnf).
Open vim. Plugins install on first launch. Restart when done.
Keys
Leader: , — press ,? for the full cheat sheet.
Ctrl+p fuzzy find file gd go to definition
,rg ripgrep project K hover docs
,gs git status ,cr run current file
,zen zen mode ,f format
,w save ,q quit
jk exit insert mode ,? cheat sheet
Files — Ctrl+p find / ,b buffers / ,rg grep / ,rG grep word / ,fh recent / ,e browser / ,, last file
Code — gd def / gy type / gi impl / gr refs / K docs / [g ]g diagnostics / ,rn rename / ,ca action / ,o outline
Edit — s+2ch jump / gc comment / cs"' surround / Alt+j/k move line / ,u undo tree / ,y clipboard / ,* replace word
Git — ,gs status / ,gd diff / ,gb blame / ,gc commit / ,gp push / ]x [x conflict markers
Windows — Ctrl+hjkl navigate (+ tmux) / ,z maximize / ,h ,l buffers / ,tv ,th terminal / Esc Esc exit terminal
LSP
:LspInstallServer " auto-detects filetype
:LspStatus " check what's running
pylsp, gopls, rust-analyzer, clangd, marksman — no Node.js. JS/TS servers need Node.
ALE and vim-lsp coexist cleanly (ale_disable_lsp=1). ALE handles linting + formatting. vim-lsp handles everything else.
Architecture
~/.vim/
├── .vimrc thin loader
├── modules/
│ ├── env.vim TTY detection, truecolor
│ ├── plugins.vim vim-plug + 29 plugins
│ ├── core.vim settings, keymaps, performance
│ ├── ui.vim colorscheme, statusline, startify
│ ├── editing.vim easymotion, yank highlight
│ ├── navigation.vim fzf, netrw, windows, terminal
│ ├── lsp.vim vim-lsp, asyncomplete
│ ├── lint.vim ale, format-on-save
│ ├── git.vim fugitive, gitgutter
│ ├── writing.vim markdown, previm, zen mode
│ ├── languages.vim vim-go, filetype settings
│ └── tools.vim cheat sheet, run file, helpers
└── tutor/
└── chopsticks.tutor
Each module is self-contained. Comment out call s:load('git') in .vimrc to disable git. Add call s:load('mine') to load your own.
Learn
:ChopsticksLearn " interactive tutorial — 10 lessons
:Tutor " vim basics (if needed first)
,? " cheat sheet
Troubleshooting
| Problem | Fix |
|---|---|
| Plugins not loading | :PlugInstall then :PlugUpdate |
| LSP not starting | :LspInstallServer for current filetype |
| Colors wrong | export COLORTERM=truecolor in shell rc |
Ctrl+s freezes |
stty -ixon in shell rc |
| Everything slow | Large file? Check :echo &syntax — auto-disabled >10MB |
More in the wiki.