Skip to content

Repository files navigation

██████╗ ██╗███╗   ██╗██╗   ██╗██╗███╗   ███╗
██╔══██╗██║████╗  ██║██║   ██║██║████╗ ████║
██████╔╝██║██╔██╗ ██║██║   ██║██║██╔████╔██║
██╔══██╗██║██║╚██╗██║╚██╗ ██╔╝██║██║╚██╔╝██║
██████╔╝██║██║ ╚████║ ╚████╔╝ ██║██║ ╚═╝ ██║
╚═════╝ ╚═╝╚═╝  ╚═══╝  ╚═══╝  ╚═╝╚═╝     ╚═╝

binvim: the first vim IDE

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-N selections; 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 .csproj family, and Bash, plus hand-scanned colouring for .editorconfig and .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 :messages for 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 .editorconfig on 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 :health dashboard; and a Catppuccin Mocha palette with ready-made themes. → Keys, Configuration

How binvim compares

binvim is the first vim IDE. Here's how it stacks up against the editors and IDEs people usually weigh:

Install

brew install bgunnarsson/binvim/binvim              # macOS
curl -fsSL https://binvim.dev/install.sh | sh        # Linux
cargo install --locked binvim                        # anywhere with a Rust toolchain
iwr https://binvim.dev/install.ps1 -UseBasicParsing | iex   # Windows

Scoop, 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.

Run

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.

Terminals

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.

Documentation

  • Install: Homebrew, the install scripts, Scoop, crates.io, the Nix flake, from source, and binvim-install / :install / :update for 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.toml section 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.

Licence

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.

About

The first vim IDE. A vim-native IDE in a single binary: multi-server LSP, tree-sitter, four DAP debuggers, opt-in Copilot, an AI pane, and test/task runners. No plugin manager.

Topics

Resources

Contributing

Stars

17 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages