Bring the power and efficiency of LazyVim to VS Code and any compatible fork with 50+ carefully crafted keybindings.
This is very much a work in progress, and I plan to refine this configuration and fix it as I go on. Coming from a Vim background, I have no desire to learn editor-specific shortcuts and instead plan to use Vim functionality within VS Code-compatible editors. The core principle is to rely on native Vim shortcuts/commands first, make them work in VS Code and its forks as much as possible, log any odd behaviour, and fix anything that feels off. Please feel free to contribute and share ideas! Things might break in progress due to editors' updates and changes. If I notice something, I try to patch as I go on.
A comprehensive Vim configuration for VS Code and compatible forks that mirrors the LazyVim experience with <space> as the leader key. Perfect for developers who want Neovim muscle memory in their editor with full LSP integration, Git operations, and modern editor features. Works with any editor that supports the VSCodeVim extension.
- 50+ LazyVim-aligned keybindings - Organized by prefix (
<leader>f*,<leader>s*,<leader>c*, etc.) - Full Vim emulation - Modal editing with proper mode indicators
- LSP integration - Code navigation, formatting, refactoring
- Git operations - Integrated with GitLens for blame, history, diff
- Window management -
Ctrl+h/j/k/lsplit navigation - Performance optimized - Dedicated thread prevents typing lag
- Multi-editor support - Works with VS Code and any VS Code-compatible fork
code --install-extension vscodevim.vimcode --install-extension eamodio.gitlens
code --install-extension hoovercj.vscode-settings-cyclerCopy configuration files to your editor's user directory (VS Code shown β adjust path for your editor):
macOS:
cp config/settings.json ~/Library/Application\ Support/Code/User/
cp config/keybindings.json ~/Library/Application\ Support/Code/User/Linux:
cp config/settings.json ~/.config/Code/User/
cp config/keybindings.json ~/.config/Code/User/Windows (PowerShell):
Copy-Item config\settings.json $env:APPDATA\Code\User\
Copy-Item config\keybindings.json $env:APPDATA\Code\User\That's it! See SETUP.md for detailed installation instructions and troubleshooting.
| Keybinding | Action | Category |
|---|---|---|
<leader>ff |
Find files | File |
<leader>/ |
Search in workspace | Search |
<leader>e |
Toggle sidebar | File |
<leader>ca |
Code action | LSP |
gd |
Go to definition | LSP |
Shift+H/L |
Previous/next buffer | Buffer |
Ctrl+h/j/k/l |
Navigate splits | Window |
<leader>gg |
Git status | Git |
[d / ]d |
Previous/next diagnostic | Diagnostic |
Leader key: <space>
See KEYBINDINGS.md for complete shortcuts reference.
- SETUP.md - Complete installation guide and configuration details
- KEYBINDINGS.md - Comprehensive shortcuts guide and cheat sheet
- TIPS_AND_TRICKS.md - Power user features, workflows, and best practices
- TROUBLESHOOTING.md - Common issues and solutions
- REFERENCES.md - Learning resources and external links
- CHANGELOG.md - Version history and breaking changes
- KNOWN_ISSUES.md - Known issues and workarounds
VimCode/
βββ config/
β βββ settings.json # VS Code settings + all <leader> bindings
β βββ keybindings.json # Modifier keys (Ctrl/Alt/Shift) bindings
βββ SETUP.md # Installation and configuration guide
βββ KEYBINDINGS.md # Shortcuts reference and cheat sheet
βββ TIPS_AND_TRICKS.md # Power user guide
βββ TROUBLESHOOTING.md # Common issues and solutions
VimCode uses the LazyVim convention of organizing keybindings by prefix:
<leader>f*- File operations (find, recent, new, buffer list)<leader>s*- Search operations (grep, workspace symbols, replace)<leader>c*- Code actions (format, rename, quick fix)<leader>b*- Buffer management (close, switch, pin/unpin)<leader>g*- Git operations (blame, status, history, diff)<leader>w*- Window management (split, close, maximize)<leader>x*- Diagnostics (problems panel, navigation)<leader>u*- UI toggles (word wrap, zen mode, line numbers)
VimCode works with any editor built on VS Code's extension host that supports the VSCodeVim extension. This includes VS Code, Cursor, Antigravity, Windsurf, and other forks using the same settings and keybindings format.
Configuration is actively maintained on a VS Code-compatible fork. Other editors follow the same settings format and should work equivalently, but minor differences may exist. Community contributions for fork-specific testing and fixes are very welcome.
Path note: Each editor stores config in its own directory (e.g.
~/.config/Cursor/User/,~/.config/Antigravity/User/). See SETUP.md for per-editor paths.
VimCode follows these principles:
- Consistency - Same keybindings between Neovim and VS Code
- Discoverability - Organized by prefix for easy learning
- Efficiency - Common operations accessible with minimal keystrokes
- Integration - Work with VS Code's native features, not against them
- Performance - Optimized configuration for responsive editing
After installation, test these essential bindings:
-
Spacein Normal mode doesn't move cursor -
<leader>ff(Space, f, f) opens file picker -
<leader>/(Space, /) opens workspace search -
gdjumps to definition -
Shift+H/Shift+Lswitches buffers -
Ctrl+h/j/k/lnavigates between splits
See SETUP.md for complete validation checklist.
If you love Vim but need the power of VS Code's ecosystem, VimCode gives you the best of both worlds:
- Familiar muscle memory from LazyVim
- Modern LSP features with VS Code's IntelliSense
- Rich extension ecosystem (GitLens, debuggers, formatters)
- Visual feedback with status bar mode indicators
- Cross-platform works on macOS, Linux, and Windows
Contributions are welcome! Found a bug or have a suggestion? Feel free to open an issue or submit a pull request.
For major changes, please open an issue first to discuss what you would like to change. See .github/CONTRIBUTING.md for detailed contribution guidelines.
Some keybindings are experimental and may require adjustments based on your workflow. Feel free to customize the configuration files to suit your needs.
MIT
Get Started: SETUP.md | Quick Reference: KEYBINDINGS.md | Learn More: TIPS_AND_TRICKS.md