██████╗ ██╗███╗ ██╗██╗ ██╗██╗███╗ ███╗
██╔══██╗██║████╗ ██║██║ ██║██║████╗ ████║
██████╔╝██║██╔██╗ ██║██║ ██║██║██╔████╔██║
██╔══██╗██║██║╚██╗██║╚██╗ ██╔╝██║██║╚██╔╝██║
██████╔╝██║██║ ╚████║ ╚████╔╝ ██║██║ ╚═╝ ██║
╚═════╝ ╚═╝╚═╝ ╚═══╝ ╚═══╝ ╚═╝╚═╝ ╚═╝
binvim is the first vim IDE: a vim-native integrated development environment in a single binary, rather than a plain modal editor (Vim, Helix), an editor you assemble into an IDE from plugins (Neovim + distributions like AstroNvim / LazyVim), or a GUI IDE with bolted-on vim emulation (VS Code, Visual Studio, Rider). → What is a vim IDE?
A Vim-grammar TUI editor written in Rust. One binary, no plugin system; everything below ships built in.
- Editing: modal editing with operators, motions, text objects, marks, registers, macros and dot-repeat; real multi-cursor and Sublime-style
Ctrl-Nselections; surround, code folding, smart indent, persistent undo, OS-clipboard paste, horizontal scrolling; writes that can't lose work and recovery after a crash. → Editing - Highlighting: tree-sitter for Rust, TypeScript / TSX / JSX, JavaScript, JSON, Go, Python, C / C++, Java, Ruby, PHP, Lua, TOML, Svelte, Zig, Nix, Elixir, Dockerfile, SQL, HTML, CSS / SCSS, Markdown, C#, Razor, YAML, XML with the
.csprojfamily, and Bash, plus hand-scanned colouring for.editorconfigand.gitignore. → Highlighting - LSP: several servers per buffer (tsserver plus Tailwind, csharp-ls over Razor): completion, snippets, hover, rename, code actions, inlay hints, semantic tokens over tree-sitter, document highlight, signature help, references, document and workspace symbols, and
:messagesfor what the servers say. Opt-in GitHub Copilot ghost completions. → LSP - Debugging: DAP for .NET (netcoredbg), Go (delve), Python (debugpy) and Rust / C / C++ (lldb-dap): project, bin and script pickers, .NET launch profiles, conditional breakpoints, frames, locals with lazy expansion, watches, and the Visual Studio / Rider F-keys. → Debugger
- Formatting: one formatter per extension (biome, csharpier, gofmt / goimports, ruff, clang-format, shfmt, stylua, prettier, taplo, rufo, php-cs-fixer, google-java-format, zig fmt, nixfmt, mix format, ktfmt, sql-formatter) plus
.editorconfigon every save. → External tools - Workspace: fuzzy pickers for files, grep, symbols and more; window splits with pick-on-split (
<C-w>v→ picker → side by side); a tab bar; sessions with per-buffer jumplists; a git gutter with hunk staging; an embedded terminal, task runner and test runner; a:healthdashboard; and a Catppuccin Mocha palette with ready-made themes. → Keys, Configuration
binvim is the first vim IDE. Here's how it stacks up against the editors and IDEs people usually weigh:
- What is a vim IDE?
- binvim vs Neovim
- binvim vs Helix
- binvim vs AstroNvim / LazyVim
- binvim vs VS Code
- binvim vs Visual Studio
- binvim vs Rider
brew install bgunnarsson/binvim/binvim # macOS
curl -fsSL https://binvim.dev/install.sh | sh # Linux
cargo install --locked binvim # anywhere with a Rust toolchainiwr https://binvim.dev/install.ps1 -UseBasicParsing | iex # WindowsScoop, the Nix flake, building from source, and binvim-install, the one-shot setup for the LSPs, formatters and debug adapters binvim drives, are in docs/install.md.
binvim
binvim [path]
bim
bim [path]If path is omitted and a session exists for this cwd, the session restores (start page + tab row above it). Otherwise the start page renders alone. Press : for a command (:e <path>, :q) or <space><space> to open the file picker.
binvim's official terminal is Ghostty on macOS and Linux, and PowerShell in Windows Terminal on Windows. Other terminals work too, with the differences recorded in the terminal matrix: the checks every terminal is held to, and how Kitty, WezTerm, tmux and the rest came out.
- Install: Homebrew, the install scripts, Scoop, crates.io, the Nix flake, from source, and
binvim-install/:install/:updatefor the toolchains. - Editing: modal editing, motions and text objects, registers and macros, search, marks, folds, persistent undo, the git gutter, writes and recovery, sessions and tabs, pickers.
- Keys: leader bindings, buffer / tab navigation, window splits.
- Ex commands: the
:commands beyond the standard set. - Vim compatibility: what's supported, where binvim differs on purpose, and what's left out.
- Tree-sitter highlighting: the languages and the per-language query tweaks.
- LSP: capabilities, their bindings, and multi-server fan-out.
- Debugger: the DAP adapters, bindings, breakpoints and the debug pane.
- External tools: every LSP, formatter and debug adapter binvim spawns, with the install command for each.
- Configuration:
~/.config/binvim/config.tomlsection by section, keymaps, and the theme presets. - Project layout: what lives where in
src/. - Terminal matrix: the checklist every terminal is held to, and the results per terminal.
- Data-loss audit: every way text reaches disk or could be lost, what binvim guarantees there, and the test or check behind each.
- Known issues: defects binvim ships with, and what each one costs you.
- Roadmap: the goals through 1.0 and the milestone each release closes.
- Windows: where the Windows port stands and what is still to do.
Alongside these: CHANGELOG.md and CONTRIBUTING.md.
Source-available, not open source. Copyright (c) 2026 B. Gunnarsson; see LICENSE for the full text. In short: you may read the source, run it locally, modify your own copy, and submit pull requests upstream. You may not redistribute, publicly fork, or run it as a hosted service. For anything outside that scope, contact the licensor on Twitter/X at @bgunnarssonis.