Bring the power and efficiency of LazyVim to VS Code 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 VS Code shortcuts and instead plan to use Vim functionality within VS Code. The core principle is to rely on native Vim shortcuts/commands first, make them work in VS Code as much as possible, log any odd behaviour, and fix anything that feels off. Please feel free to contribute and share ideas!
A comprehensive Vim configuration for VS Code that mirrors the LazyVim experience with <space> as the leader key. Perfect for developers who want Neovim muscle memory in VS Code with full LSP integration, Git operations, and modern editor features. Compatible with VSCodeVim, Cursor, and Windsurf editors.
- 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, Cursor, and Antigravity (Windsurf)
code --install-extension vscodevim.vimcode --install-extension eamodio.gitlens
code --install-extension hoovercj.vscode-settings-cyclerCopy configuration files to your VS Code user directory:
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
- EDITOR_COMPARISON.md - VS Code vs Cursor vs Antigravity compatibility
- REFERENCES.md - Learning resources and external links
- CHANGELOG.md - Version history and breaking changes
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)
- VS Code - Full support (primary target)
- Cursor - Compatible (AI-powered editor)
- Antigravity (Windsurf) - Compatible (VS Code fork)
See EDITOR_COMPARISON.md for details on multi-editor support.
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