No description
Find a file
m1ngsama 5371521360 refactor: Unix minimalism — drop 565 lines, 5 plugins, 0 features that matter
Remove: Goyo, Limelight, previm, vim-obsession, indentLine (5 plugins).
Remove: cheat sheet function (90 lines), tutorial system (269 lines),
  ASCII art banner, tab management (8 keybindings), dead code (HasPaste,
  CleanExtraSpaces, ToggleNumber), spell nav bindings, scratch buffer,
  syntax stack debug, TTY startup message.
Fold: writing.vim → languages.vim (vim-markdown settings only).
Keep: everything that edits code — LSP, FZF, Git, ALE, netrw sidebar.
Result: 24 plugins, 949 lines, 19ms startup. No decorations, just tools.
2026-04-22 14:27:15 +08:00
.github docs: GitHub polish — hero README, CI, templates, demo GIF 2026-04-22 00:58:56 +08:00
modules refactor: Unix minimalism — drop 565 lines, 5 plugins, 0 features that matter 2026-04-22 14:27:15 +08:00
.gitignore fix: round 2 — completion speed, octal numbers, dead files 2026-04-21 23:32:59 +08:00
.vimrc refactor: Unix minimalism — drop 565 lines, 5 plugins, 0 features that matter 2026-04-22 14:27:15 +08:00
CONTRIBUTING.md docs: GitHub polish — hero README, CI, templates, demo GIF 2026-04-22 00:58:56 +08:00
get.sh fix: remaining usability and design improvements 2026-04-15 10:15:07 +08:00
install.sh Fix shellcheck SC2012: use find instead of ls for plugin count 2026-04-22 01:02:18 +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 refactor: Unix minimalism — drop 565 lines, 5 plugins, 0 features that matter 2026-04-22 14:27:15 +08:00

chopsticks demo

chopsticks

Vim for engineers. 24 plugins, works over SSH.

MIT License Vim 8.0+ Platform Tests Release


curl -fsSL https://raw.githubusercontent.com/m1ngsama/chopsticks/main/get.sh | bash

Why

You SSH into a server. You need to edit code. You want LSP, fuzzy find, git integration, format-on-save — not a 20-minute setup.

chopsticks gives you a production-ready Vim config in one command. Pure VimScript — no Node.js for the core. Degrades gracefully on TTY. Works the same on your MacBook and your headless Arch box.

24 plugins, LSP, linting, and a hand-built statusline. No bloat, no decorations, just tools.

What's in the box

Feature Description
LSP completion, go-to-def, hover, rename, code actions — pure VimScript (vim-lsp)
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 — fugitive + gitgutter
Run file ,cr — auto-detects Python, Go, Rust, JS, C, Shell, and more
TTY-aware degrades gracefully on SSH, console, slow links — never breaks

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

Supports macOS (brew), Debian/Ubuntu (apt), Arch (pacman), Fedora (dnf).

First launch installs plugins automatically (30-60s). Restart vim when done.

Keys

Leader: ,

Ctrl+p    fuzzy find file          gd    go to definition
,rg       ripgrep project          K     hover docs
,e        toggle file sidebar      ,cr   run current file
,gs       git status               ,f    format
,w        save                     ,q    quit
jk        exit insert mode         ,bd   close buffer
All keybindings

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 | ,cr run

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

Windows

Ctrl+hjkl navigate (+ tmux) | ,z maximize | ,h ,l buffers | ,tv terminal | Esc Esc exit terminal

Writing

,mt table of contents

LSP

:LspInstallServer    " auto-detects filetype
:LspStatus           " check what's running

pylsp, gopls, rust-analyzer, clangd, marksman, sqls — 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 + 24 plugins
│   ├── core.vim        settings, keymaps, performance
│   ├── ui.vim          solarized, 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
│   ├── languages.vim   vim-go, markdown, filetype settings
│   └── tools.vim       run file, quickfix, helpers

Each module is self-contained. Comment out one line in .vimrc to disable it. Add your own with call s:load('mine').

Performance

Metric Value
Lazy-loaded 6 plugins (on command or filetype)
Built-in plugins skipped 10 (gzip, tar, zip, vimball, etc.)
Large file threshold 10MB (auto-disables syntax + undo)
TTY large file 500KB (syntax disabled)

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? Auto-disabled >10MB

More in the wiki.

Contributing

See CONTRIBUTING.md. The two rules that matter: no Node.js dependencies, and don't regress startup time.

License

MIT