diff --git a/QUICKSTART.md b/QUICKSTART.md
index 8d6f6df..751e6e4 100644
--- a/QUICKSTART.md
+++ b/QUICKSTART.md
@@ -91,4 +91,10 @@ Ctrl+h/j/k/l splits + tmux panes
,mt table of contents
```
+## Health check
+
+```
+:ChopsticksStatus see what's installed and what's missing
+```
+
See [README](README.md) for the full reference. See the [wiki](https://github.com/m1ngsama/chopsticks/wiki) for deep dives.
diff --git a/README.md b/README.md
index 9fb37ea..3bc5395 100644
--- a/README.md
+++ b/README.md
@@ -41,6 +41,8 @@ chopsticks gives you a production-ready Vim config in one command. Pure VimScrip
| **Fuzzy find** | files, buffers, grep, tags, marks, commands — [FZF](https://github.com/junegunn/fzf.vim) |
| **Git** | status, diff, blame, push, pull, conflict markers — [fugitive](https://github.com/tpope/vim-fugitive) + [gitgutter](https://github.com/airblade/vim-gitgutter) |
| **Run file** | `,cr` — auto-detects Python, Go, Rust, JS, C, Shell, and more |
+| **Markdown** | live preview in browser (`,mp`), table of contents (`,mt`) |
+| **Diagnostics** | `:ChopsticksStatus` — see what's installed, what's missing, how to fix it |
| **TTY-aware** | degrades gracefully on SSH, console, slow links — never breaks |
## Install
@@ -70,7 +72,7 @@ Ctrl+p fuzzy find file gd go to definition
,e toggle file sidebar ,cr run current file
,gs git status ,f format
,w save ,q quit
-jk exit insert mode ,bd close buffer
+jk exit insert mode ,? cheat sheet
```
@@ -78,27 +80,35 @@ jk exit insert mode ,bd close buffer
### Files
-`Ctrl+p` find | `,b` buffers | `,rg` grep | `,rG` grep word | `,fh` recent | `,e` browser | `,,` last file
+`Ctrl+p` find | `,b` buffers | `,rg` grep | `,rG` grep word | `,fh` recent | `,fl` lines | `,e` browser | `,E` browser (file dir) | `,,` last file
### Code
-`gd` def | `gy` type | `gi` impl | `gr` refs | `K` docs | `[g` `]g` diagnostics | `,rn` rename | `,ca` action | `,o` outline | `,cr` run
+`gd` def | `gy` type | `gi` impl | `gr` refs | `K` docs | `[g` `]g` diagnostics | `[e` `]e` ALE errors | `,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
+`s`+2ch jump | `gc` comment | `cs"'` surround | `Alt+j/k` move line | `,u` undo tree | `,y` clipboard | `,*` replace word | `,F` re-indent | `,W` strip whitespace | `[` `]` blank lines
### Git
-`,gs` status | `,gd` diff | `,gb` blame | `,gc` commit | `,gp` push | `]x` `[x` conflict
+`,gs` status | `,gd` diff | `,gb` blame | `,gc` commit | `,gp` push | `,gl` pull | `]x` `[x` conflict
### Windows
-`Ctrl+hjkl` navigate (+ tmux) | `,z` maximize | `,h` `,l` buffers | `,tv` terminal | `Esc Esc` exit terminal
+`Ctrl+hjkl` navigate (+ tmux) | `,z` maximize | `,h` `,l` buffers | `,bd` close buffer | `,=` `,−` resize | `,tv` `,th` terminal | `Esc Esc` exit terminal
-### Writing
+### Markdown
-`,mt` table of contents
+`,mp` preview in browser | `,mt` table of contents
+
+### Toggle
+
+`F2` paste | `F3` line numbers | `F4` relative numbers | `F6` invisible chars | `,ss` spell check
+
+### Utilities
+
+`,cp` copy full path | `,cf` copy filename | `,ev` edit vimrc | `,sv` reload vimrc | `,wa` save all | `:ChopsticksStatus` diagnostics
@@ -107,6 +117,7 @@ jk exit insert mode ,bd close buffer
```vim
:LspInstallServer " auto-detects filetype
:LspStatus " check what's running
+:ChopsticksStatus " see all tools + LSP + linters at a glance
```
pylsp, gopls, rust-analyzer, clangd, marksman, sqls — no Node.js. JS/TS servers need Node.
@@ -119,17 +130,17 @@ ALE and vim-lsp coexist cleanly (`ale_disable_lsp=1`). ALE handles linting + for
~/.vim/
├── .vimrc thin loader
├── modules/
-│ ├── env.vim TTY detection, truecolor
+│ ├── env.vim TTY detection, truecolor, skip built-in plugins
│ ├── plugins.vim vim-plug + 25 plugins
│ ├── core.vim settings, keymaps, performance
│ ├── ui.vim solarized, statusline, startify
-│ ├── editing.vim easymotion, yank highlight
-│ ├── navigation.vim fzf, netrw, windows, terminal
+│ ├── editing.vim easymotion, yank highlight, blank lines
+│ ├── navigation.vim fzf, netrw sidebar, windows, terminal
│ ├── lsp.vim vim-lsp, asyncomplete
│ ├── lint.vim ale, format-on-save
-│ ├── git.vim fugitive, gitgutter
+│ ├── git.vim fugitive, gitgutter, conflict nav
│ ├── languages.vim vim-go, markdown, filetype settings
-│ └── tools.vim run file, quickfix, helpers
+│ └── tools.vim run file, quickfix, cheat sheet, diagnostics
```
Each module is self-contained. Comment out one line in `.vimrc` to disable it. Add your own with `call s:load('mine')`.
@@ -138,7 +149,7 @@ Each module is self-contained. Comment out one line in `.vimrc` to disable it. A
| Metric | Value |
|--------|-------|
-| Lazy-loaded | 6 plugins (on command or filetype) |
+| Lazy-loaded | 7 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) |
@@ -152,6 +163,7 @@ Each module is self-contained. Comment out one line in `.vimrc` to disable it. A
| Colors wrong | `export COLORTERM=truecolor` in shell rc |
| `Ctrl+s` freezes | `stty -ixon` in shell rc |
| Everything slow | Large file? Auto-disabled >10MB |
+| What's installed? | `:ChopsticksStatus` shows tools, LSP, linters |
More in the [wiki](https://github.com/m1ngsama/chopsticks/wiki).
diff --git a/modules/tools.vim b/modules/tools.vim
index 4efca84..78d5d2e 100644
--- a/modules/tools.vim
+++ b/modules/tools.vim
@@ -296,6 +296,7 @@ function! s:CheatSheet() abort
\ ' :w!! sudo save',
\ ' ,ev edit vimrc',
\ ' ,sv reload vimrc',
+ \ ' :ChopsticksStatus health',
\ ])
setlocal nomodifiable readonly
nnoremap q :bd