Skip to content

wojukasz/VimCode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

22 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

VimCode β€” LazyVim-Style Vim Configuration for VS Code and Compatible Forks

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.

Version License GitHub stars GitHub forks GitHub last commit GitHub issues

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.

Features

  • 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/l split navigation
  • Performance optimized - Dedicated thread prevents typing lag
  • Multi-editor support - Works with VS Code and any VS Code-compatible fork

Quick Start

1. Install Required Extension

code --install-extension vscodevim.vim

2. Install Recommended Extensions

code --install-extension eamodio.gitlens
code --install-extension hoovercj.vscode-settings-cycler

3. Apply Configuration

Copy 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\

4. Restart VS Code

That's it! See SETUP.md for detailed installation instructions and troubleshooting.

Essential Keybindings

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.

Documentation

Configuration Structure

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

Keybinding Organization

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)

Supported Editors

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.

Philosophy

VimCode follows these principles:

  1. Consistency - Same keybindings between Neovim and VS Code
  2. Discoverability - Organized by prefix for easy learning
  3. Efficiency - Common operations accessible with minimal keystrokes
  4. Integration - Work with VS Code's native features, not against them
  5. Performance - Optimized configuration for responsive editing

Validation Checklist

After installation, test these essential bindings:

  • Space in Normal mode doesn't move cursor
  • <leader>ff (Space, f, f) opens file picker
  • <leader>/ (Space, /) opens workspace search
  • gd jumps to definition
  • Shift+H / Shift+L switches buffers
  • Ctrl+h/j/k/l navigates between splits

See SETUP.md for complete validation checklist.

Why VimCode?

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

Contributing

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.

Note

Some keybindings are experimental and may require adjustments based on your workflow. Feel free to customize the configuration files to suit your needs.

License

MIT


Get Started: SETUP.md | Quick Reference: KEYBINDINGS.md | Learn More: TIPS_AND_TRICKS.md

About

πŸš€LazyVim-Style Vim Configuration for VS Code and Compatible Forks | Cursor | AntiGravity | 50+ keybindings | Full LSP & Git integration

Topics

Resources

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors