- File explorer with icons, Git status and single-click open
- Clickable tabs, dashboard, notifications
- Fuzzy find files and text (ripgrep, fd)
- Full mouse support — click, drag, scroll, select
- Default, compact and minimal layouts
Neovim that feels like home
A lightweight Neovim distribution with the comfort of VS Code — explorer, tabs, search, LSP, a Git graph and a real terminal panel — that still starts in ~19 ms and uses zero CPU while you think.
git clone https://github.com/cachewraith/wraithvim ~/.local/share/wraithvim
~/.local/share/wraithvim/install.sh
- downloads
- —
- release
- —
- startup
- 19 ms
- idle cpu
- 0%
- memory
- 27 MiB
Startup, CPU and memory measured on an i7-13620H with
scripts/benchmark.sh.
Downloads count the release archive; most people git clone.
~/.local/share/wraithvim/install.sh
Install in a minute
You need Neovim 0.12+ and Git on Linux. Your existing
~/.config/nvim is backed up, never deleted, and nothing needs sudo.
-
1Get the tools
sudo pacman -S --needed neovim git ripgrep fd make gccsudo apt install git ripgrep fd-find make gcc curlDistro packages of Neovim are usually older than 0.12 — use the official release tarball (how).
sudo dnf install neovim git ripgrep fd-find make gccA Nerd Font in your terminal gives you file and folder icons. Not required — WraithVim falls back to plain text.
-
2Install WraithVim
git clone https://github.com/cachewraith/wraithvim ~/.local/share/wraithvim ~/.local/share/wraithvim/install.shWant to look first?
install.sh --dry-runprints every step and changes nothing. To try it next to your current setup:install.sh --appname wvim, thenNVIM_APPNAME=wvim nvim. -
3Open it
nvimThe first start downloads the pinned plugins (a few seconds). Then run
:Healthto see what is installed and what is optional.
Inside WraithVim press Space u u (or type :Update), then restart.
Your settings in ~/.config/wraithvim/ are never touched.
~/.local/share/wraithvim/uninstall.sh asks before every step, restores your old
config from its backup and keeps your settings.
~/.local/share/wraithvim/docs/first-steps.md
Your first ten minutes
Coming from VS Code? These are the only things you need. Keys are pressed one after another — Space g g means Space, then g, then g.
-
The one new idea: two modes
In Normal mode keys are commands; in Insert mode keys type text. Press i to start typing and Esc to stop. The statusline always shows which mode you are in.
-
Press Space and wait
A popup lists every key you can press next. You never have to memorise anything — Space e opens the explorer, Space ? shows them all.
-
Find anything
Space Space finds a file by name, Space / searches text in the whole project. Click a file in the explorer to open it.
-
A terminal at the bottom
Space t or Ctrl+Shift+` opens it. Click inside to type, Esc Esc to scroll and copy, Hide in its header to tuck it away.
-
Forgot a key? Search for it
Space p (or F1) lists every action by name with its key — type pull, graph, format, press Enter.
-
Git without leaving
Space g g draws the commit graph, Space g s shows status, Space g c commits. Merge conflicts open in a three-way view.
Save & close
Ctrl+S save · Space x close tab · Space q quit
Move around
Click tabs and files, scroll with the wheel, drag split edges to resize.
Code
gd definition · K hover · Space c a fix · Space r n rename
Stay current
Space u u update · Space u h health check
~/.local/share/wraithvim/docs/keys.md
Every key, searchable
Generated from WraithVim's own key registry (), so it is always right. Shift+P means hold Shift and press P.
| Press | Does | Group |
|---|
No key matches — try Space p inside WraithVim.
VS Code keys need return { preset = "vscode" } in ~/.config/wraithvim/keymaps.lua.
~/.local/share/wraithvim/lua/wraithvim/features.lua
What's inside
An IDE's worth of tools, loaded only when you use them.
- Commit graph of all branches
- Change markers, stage & undo hunks, blame
- Status, commit, amend, push, pull, branches
- Side-by-side diffs and file history
- Three-way merge conflicts on Git's index stages
- Native LSP: definition, references, rename, fixes
- Completion with snippets
- Format on demand or on save
- Treesitter highlighting, on demand
- Nothing installed behind your back (Mason optional)
| Language | Language server | Formatter |
|---|---|---|
| PHP | intelephense | pint |
| JavaScript / TypeScript | vtsls | prettier |
| Python | basedpyright | ruff |
| Go | gopls | gofumpt |
| C / C++ | clangd | clang-format |
| Java | jdtls | google-java-format |
| Lua | lua-language-server | stylua |
| SQL · Bash · YAML | sqls · bashls · yamlls | sql-formatter · shfmt · prettier |
Each starts only when its tool is installed and a matching file is open.
No timers, no polling, no file watchers while you are idle. Enforced by the test suite.
~/.config/wraithvim/
Make it yours
Your settings live in small files that updates never touch. Mistakes are reported, not fatal.
-- VS Code shortcuts: Ctrl+P, Ctrl+B, Ctrl+`, Ctrl+/, F12 … return { preset = "vscode", disable = { "s", "S" }, -- remove keys you don't want { "n", "<leader>qq", "<cmd>qa<cr>", desc = "Quit all" }, }
return { preset = "default", -- default | compact | minimal theme = { style = "night" }, -- tokyonight: night | storm | moon | day icons = { nerd_font = true }, explorer = { width = 34 }, terminal = { shell = "fish", height = 14 }, }
return { java = false, -- turn a language off php = { formatters = { pint = false } }, zig = { -- or add your own filetypes = { "zig" }, servers = { zls = { cmd = "zls" } }, }, }
return { format = { on_save = true }, mason = { enabled = true }, -- optional tool installer, asks first opt = { relativenumber = true, wrap = true }, }
:Ready? Install WraithVim · read the docs · star it on GitHub
~/.local/share/wraithvim/CHANGELOG.md
What's new
Straight from the GitHub release notes, newest first. To get the latest, press Space u u in WraithVim and restart.
- Loading release notes…