>_VIM-ARB — ARB IN VIM AND NEOVIM
Load it with pathogen, get full arb support in Vim / Neovim. arb is a Tcl/Tk-flavored declarative language for visualizing and modifying Unix pipelines — pipe a stream in and it spawns a ratatui TUI or a served web page from a small spec, on fusevm/JIT. vim-arb registers the arb filetype for *.arb files and arb shebangs, highlights with a standalone arb grammar (widgets, query verbs, input sources, directives, keywords, widget paths, -flags, /regex/), indents with a brace-aware indenter, wires :make / :ArbRun through the arb binary, registers arb --check as an ALE linter, and registers arb --lsp for vim-lsp and coc.nvim (plus arb --dap guidance for nvim-dap).
Install
The arb binary must be on $PATH for running, linting and LSP. Then drop the plugin into your runtimepath:
# pathogen
cd ~/.vim/bundle
git clone https://github.com/MenkeTechnologies/vim-arb
# then, inside vim: :Helptags
# vim-plug (add to ~/.vimrc / init.vim)
Plug 'MenkeTechnologies/vim-arb'
# native packages (Vim 8+ / Neovim)
git clone https://github.com/MenkeTechnologies/vim-arb \
~/.vim/pack/plugins/start/vim-arb
Open any .arb file and it lights up — no further configuration. Help: :help vim-arb.
What you get
Filetype detection
Every *.arb file becomes filetype=arb. Extensionless scripts with a #!/usr/bin/env arb shebang are detected too.
Syntax highlighting
A standalone arb grammar — widgets, query verbs, input sources, directives, control flow, declarations, widget paths, -flags, /regex/, strings, durations/sizes, and operators — built from arb's own LSP corpus.
Indentation
A standalone brace-aware indenter — indents after a line that opens a block / paren / bracket, dedents lines that start with a closing delimiter.
Run & lint
:compiler arb wires :make to arb --check into the quickfix list; :ArbRun executes the buffer via arb %. ALE runs the same lint inline.
Language server & debugger
Registers arb --lsp for vim-lsp (filetype arb) — diagnostics, hover, completion; coc.nvim + nvim-dap (arb --dap) snippets in the README. Each is invoked with only its flag (no appended --stdio), and the wiring is guarded so the plugin still loads cleanly if the binary is absent.
Zero config
No settings required. Opt-outs: g:vim_arb_no_ale, g:vim_arb_no_lsp, and g:vim_arb_no_maps to skip an integration or the run mapping.
Token categories
The grammar classifies tokens into the categories arb's language defines — built from the verb / widget / directive corpus the arb binary ships:
| Group | Tokens (sample) |
|---|---|
| Widgets | text tail table list gauge spark bars histo chart select input tabs block frame grid |
| Input sources | in in.json in.csv in.tsv in.xml in.html in.yaml in.toml in.logfmt |
| Directives | source bind configure grid import out search timeout expect |
| Control flow | if elif else for while match case when break continue return |
| Declarations | fn var let import save as |
| Query verbs | field fields find attr where pick map tally count sum sort_by group_by uniq percentile sma |
| Actions | alert beep exec flash quit |
| Widget paths | .codes .errors .ps.sel |
| Flags | -label -max -cols -color -prompt -tabs |
Regex literals (/.../, optional trailing i), single- and double-quoted strings with escapes, the |> / <- / => operators, durations / sizes, numbers, and the full operator set are handled too. Everything links to standard highlight groups, so every colorscheme covers it without bespoke tuning.
Layout
vim-arb/ ├── ftdetect/arb.vim # *.arb + arb shebang -> filetype=arb ├── syntax/arb.vim # standalone arb grammar (widgets, verbs, sources) ├── scripts/gen_syntax.sh # stamps syntax/arb.vim with the arb version ├── ftplugin/arb.vim # commentstring '# %s', :compiler arb, :ArbRun ├── compiler/arb.vim # :make via arb --check -> quickfix ├── indent/arb.vim # standalone brace-aware indenter ├── plugin/arb.vim # ALE linter + vim-lsp + coc + nvim-dap wiring └── doc/arb.txt # :help vim-arb
Standard Vim runtime layout, so pathogen / vim-plug / native packages add it to runtimepath with no special handling. Licensed MIT.
Compatibility
| Editor / plugin | Status |
|---|---|
| Vim 8+ | Filetype, syntax, indent, ftplugin, compiler |
| Neovim | Same runtime files |
| ALE | arb --check linter |
| vim-lsp | arb --lsp language server |
| coc.nvim | languageserver config in README |
| nvim-dap | arb --dap debug adapter config in README |