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+P
then "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.timeout
if 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
when
clauses to scope keybindings - Test in clean VS Code profile
Enjoy your Neovim-like experience in VS Code! π