No description
Find a file
m1ngsama dbb11c9473 perf: 23ms → 19ms — drop vim-unimpaired, runtime tuning
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)
2026-04-22 00:46:00 +08:00
modules perf: 23ms → 19ms — drop vim-unimpaired, runtime tuning 2026-04-22 00:46:00 +08:00
tutor refactor: modular architecture — split .vimrc into 12 self-contained modules 2026-04-22 00:05:10 +08:00
.gitignore fix: round 2 — completion speed, octal numbers, dead files 2026-04-21 23:32:59 +08:00
.vimrc perf: 39ms → 23ms startup (40% faster) 2026-04-22 00:36:44 +08:00
get.sh fix: remaining usability and design improvements 2026-04-15 10:15:07 +08:00
install.sh fix: comprehensive bug audit — 14 fixes for performance and usability 2026-04-21 23:28:59 +08:00
LICENSE Initial commit 2024-11-16 17:57:38 +08:00
QUICKSTART.md docs: rewrite README and QUICKSTART — clean, short, for geeks 2026-04-22 00:21:15 +08:00
README.md perf: 23ms → 19ms — drop vim-unimpaired, runtime tuning 2026-04-22 00:46:00 +08:00

chopsticks

Vim config for people who ship code on any machine. Pure VimScript. No Node.js. Works over SSH.

License: MIT Vim 8.0+ Platform

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

FilesCtrl+p find / ,b buffers / ,rg grep / ,rG grep word / ,fh recent / ,e browser / ,, last file

Codegd def / gy type / gi impl / gr refs / K docs / [g ]g diagnostics / ,rn rename / ,ca action / ,o outline

Edits+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

WindowsCtrl+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.

License

MIT