This setup replicates your comprehensive Neovim configuration in VS Code with the Vim extension.
-
Install extensions (automated):
./install-extensions.sh
-
Copy configuration files:
# For Linux/macOS cp settings.json ~/.config/Code/User/settings.json cp keybindings.json ~/.config/Code/User/keybindings.json # For Windows cp settings.json "%APPDATA%\Code\User\settings.json" cp keybindings.json "%APPDATA%\Code\User\keybindings.json"
-
Restart VS Code
| Neovim Plugin | VS Code Extension | Description |
|---|---|---|
| lazy.nvim | Built-in Extension Manager | VS Code's native extension system |
| which-key.nvim | vspacecode.whichkey |
Show available keybindings |
| nvim-tree | Built-in Explorer + vscode-icons-team.vscode-icons |
File tree navigation |
| telescope.nvim | tomrijndorp.find-it-faster |
Fuzzy finder |
| harpoon | alefragnani.bookmarks + alefragnani.numbered-bookmarks |
Quick file navigation |
| Neovim Plugin | VS Code Extension | Description |
|---|---|---|
| gitsigns.nvim | eamodio.gitlens |
Git integration in editor |
| lazygit.nvim | eamodio.gitlens + mhutchie.git-graph |
Git workflow |
| neogit | donjayamanne.git-extension-pack |
Advanced Git operations |
| git-blame.nvim | eamodio.gitlens |
Git blame annotations |
| diffview.nvim | Built-in Git diff + mhutchie.git-graph |
Diff viewing |
| Neovim Plugin | VS Code Extension | Description |
|---|---|---|
| nvim-lspconfig | Language-specific extensions | LSP client |
| mason.nvim | Automatic via language extensions | LSP server management |
| nvim-cmp | Built-in IntelliSense + visualstudioexptteam.vscodeintellicode |
Autocompletion |
| nvim-dap | Built-in debugger + language-specific debug extensions | Debugging |
| conform.nvim | esbenp.prettier-vscode + language formatters |
Code formatting |
| nvim-lint | ms-vscode.vscode-eslint + language linters |
Linting |
| Neovim Plugin | VS Code Extension | Description |
|---|---|---|
| lualine.nvim | Built-in status bar | Status line |
| nvim-web-devicons | pkief.material-icon-theme |
File icons |
| barbecue.nvim | Built-in breadcrumbs | LSP breadcrumbs |
| noice.nvim | Built-in notifications | Enhanced UI messages |
| onedark.nvim | zhuangtongfa.material-theme |
Color scheme |
| tokyonight.nvim | enkia.tokyo-night |
Color scheme |
| Neovim Plugin | VS Code Extension | Description |
|---|---|---|
| nvim-treesitter | Built-in syntax highlighting + language extensions | Syntax highlighting |
| nvim-autopairs | Built-in bracket completion | Auto-pairs |
| vim-commentary | aaron-bond.better-comments |
Comment functionality |
| vim-visual-multi | Built-in multi-cursor (Ctrl+D) | Multiple cursors |
| trouble.nvim | usernamehw.errorlens |
Diagnostics panel |
| actions-preview.nvim | Built-in Quick Fix | Code actions |
| refactoring.nvim | p42ai.refactor |
Code refactoring |
| Neovim Plugin | VS Code Extension | Description |
|---|---|---|
| copilot.lua | github.copilot |
GitHub Copilot |
| copilot-chat.nvim | github.copilot-chat |
Copilot Chat |
<Space>- Leader key,- Local leader keyjk- Exit insert mode<Leader>ff- Find files (Find It Faster)<Leader>fg- Live grep<Leader>fb- Find buffers<Leader>fr- Recent files
<Leader>e- Toggle file explorer<Leader>E- File browser (Find It Faster)W- Save fileQ- Close bufferH/L- Navigate between tabs
<Leader>gs- Git status (Source Control view)<Leader>gb- Git blame toggle<Leader>gh- Git history<Leader>gd- Git diff<Leader>gg- Git graph (GitLens)
gd- Go to definitiongr- Find referencesgi- Go to implementationgy- Go to type definitionK- Show hover information<Leader>rn- Rename symbol<Leader>xa- Code actions<Leader>xx- Show diagnosticsgj/gk- Next/previous diagnostic
<Leader>db- Toggle breakpoint<Leader>dc- Continue debugging<Leader>dj- Step over<Leader>dk- Step into<Leader>do- Step out<Leader>dr- Restart debugging<Leader>dt- Stop debugging
<Leader>ha- Add bookmark<Leader>hh- Show bookmarks<Leader>h1-9- Jump to numbered bookmark
<Leader>zc- Open settings<Leader>zl- Show extensions<Leader>zn- Show notifications<Leader>ui- Toggle light/dark theme<Leader>uc- Select theme
"vim.leader": "<space>",
"vim.useSystemClipboard": true,
"vim.hlsearch": true,
"vim.smartcase": true,
"vim.easymotion": true,
"vim.surround": true,
"vim.camelCaseMotion.enable": true"editor.lineNumbers": "relative",
"editor.cursorStyle": "block",
"editor.tabSize": 2,
"editor.rulers": [80, 120],
"editor.wordWrap": "off"Based on your Neovim colorschemes:
- Tokyo Night (
enkia.tokyo-night) - Matches tokyonight.nvim - Material Theme (
zhuangtongfa.material-theme) - Clean, modern - Dracula (
dracula-theme.theme-dracula) - Dark theme - Gruvbox Material (
sainnhe.gruvbox-material) - Warm colors - GitHub Theme (
github.github-vscode-theme) - GitHub-inspired
- Extensions:
ms-vscode.vscode-typescript-next,bradlc.vscode-tailwindcss - Formatting:
esbenp.prettier-vscode - Linting:
ms-vscode.vscode-eslint
- Extensions:
ms-python.python,ms-python.pylint,ms-python.black-formatter - Debugging:
ms-python.debugpy - Formatting:
charliermarsh.ruff
- Extension:
rust-lang.rust-analyzer - Debugging:
vadimcn.vscode-lldb
- Extension:
golang.go - Includes LSP, debugging, and formatting
- Extension:
vscjava.vscode-java-pack - Complete Java development environment
- Extensions:
ms-vscode.cpptools,ms-vscode.cmake-tools - Debugging:
vadimcn.vscode-lldb
- Extensions:
dart-code.dart-code,dart-code.flutter
Ctrl+Shift+Pthen "Find It Faster"- Supports fuzzy file finding
- Live grep with regex support
- Respects .gitignore
- Inline blame annotations
- Git graph visualization
- File history
- Branch comparison
- Toggle bookmarks with
<Leader>ha - Navigate between numbered bookmarks
- Persistent across sessions
- Use Command Palette:
Ctrl+Shift+P- equivalent to:in Neovim - Quick Open:
Ctrl+P- similar to telescope file finder - Go to Symbol:
Ctrl+Shift+O- like telescope document symbols - Global Symbol Search:
Ctrl+T- workspace symbol search - Multi-cursor:
Ctrl+D- select next occurrence (vim-visual-multi) - Zen Mode:
Ctrl+K Z- distraction-free editing
Edit keybindings.json to add your own shortcuts:
{
"key": "space f r",
"command": "workbench.action.openRecent",
"when": "editorTextFocus && vim.mode == 'Normal'"
}Add to settings.json under vim.normalModeKeyBindings:
{
"before": ["<leader>", "custom"],
"commands": ["your.command.here"]
}- Disable unused Vim plugins in settings
- Adjust
vim.timeoutif keys feel laggy - Use performance monitoring extension
- Check output panel for language server logs
- Restart language server via Command Palette
- Verify extension is installed and enabled
- Check for conflicts in Keyboard Shortcuts editor
- Use
whenclauses to scope keybindings - Test in clean VS Code profile
Enjoy your Neovim-like experience in VS Code! π