Skip to main content

Migrating from VSCode

Welcome to FtVim! This guide helps Visual Studio Code users transition to Neovim by mapping familiar features and shortcuts.

Key Differences​

The biggest difference is modal editing. In VSCode, you're always in "insert mode". In Vim:

ModePurposeEnter With
NormalNavigation, commandsEsc or Ctrl+[
InsertTyping texti, a, o, etc.
VisualSelecting textv, V, Ctrl+v
CommandRunning commands:

Tip: Press Esc whenever you're unsure. It returns you to Normal mode.

No Mouse Required​

While FtVim supports mouse, you'll be much faster using the keyboard. Give it a few days!

Configuration is Code​

Instead of a settings GUI, you configure FtVim with Lua code. This is more powerful and version-controllable.

Keyboard Shortcuts Comparison​

File Navigation​

VSCodeFtVimDescription
Ctrl+P<leader>ffFind files
Ctrl+Shift+F<leader>fsSearch in files (grep)
Ctrl+Shift+E<leader>eToggle file explorer
Ctrl+Tab<leader>fbSwitch between open files
Ctrl+Shift+P<leader>fCCommand palette
Ctrl+G:<number>Go to line
Ctrl+R<leader>frRecent files

Editing​

VSCodeFtVimDescription
Ctrl+Cy (yank)Copy (in visual mode)
Ctrl+Vp (paste)Paste
Ctrl+Xd (delete)Cut (in visual mode)
Ctrl+ZuUndo
Ctrl+Shift+ZCtrl+rRedo
Ctrl+D* then cgnSelect next occurrence
Ctrl+/gcc or <leader>/Toggle line comment
Alt+Up/Down<A-k> / <A-j>Move line up/down
Ctrl+Shift+KddDelete line
Ctrl+EnteroInsert line below
Ctrl+Shift+EnterOInsert line above

Code Intelligence​

VSCodeFtVimDescription
F12gdGo to definition
Shift+F12grFind references
Ctrl+SpaceCtrl+SpaceTrigger autocomplete
Ctrl+.<leader>caQuick fix / code actions
F2<leader>crRename symbol
Ctrl+Shift+O:lua Snacks.picker.lsp_symbols()Go to symbol in file
Ctrl+T:lua Snacks.picker.lsp_workspace_symbols()Go to symbol in workspace
Ctrl+HoverKShow hover documentation
Shift+Alt+F<leader>cfFormat document

Search & Replace​

VSCodeFtVimDescription
Ctrl+F/Search in file
Ctrl+H:%s/old/new/gReplace in file
F3nNext match
Shift+F3NPrevious match
Ctrl+Shift+F<leader>fsSearch in project
Ctrl+Shift+H:cdo s/old/new/gReplace in project (after sending the search results to the quickfix list)

Window Management​

VSCodeFtVimDescription
Ctrl+\<leader>wsvSplit editor vertically
Ctrl+1/2/3<C-h/l>Focus editor group
Ctrl+W<leader>bdClose editor
Ctrl+Shift+T-Reopen closed editor
Ctrl+B<leader>eToggle sidebar
Ctrl+`<C-\>Toggle terminal

Git​

VSCodeFtVimDescription
Source Control view<leader>goGit status
-<leader>ghbGit blame (line)
Git: Stage Changes<leader>ghs / <leader>ghSStage hunk / whole file
Git: Commit:!git commit or the terminal (<C-\>)Commit

VSCode Extensions → FtVim Equivalents​

VSCode ExtensionFtVim PluginNotes
IntelliSensenvim-lspconfig + blink.cmpBuilt-in
GitLensgitsigns.nvimBuilt-in
Prettierconform.nvimBuilt-in, prettier comes with the Web extra
ESLinteslint language serverWeb extra
Auto Rename Tagnvim-ts-autotagAdd it as a plugin
Bracket Pair ColorizerBuilt-in Neovimmatchparen
Path Intellisenseblink.cmpPath source
Project Manager-<leader>fr (recent files)
TODO Highlighttodo-comments.nvimAdd it as a plugin
Error LensLSP virtual textBuilt-in
C/C++ Debuggernvim-dapDebugging extra

Concepts Translation​

Files vs Buffers​

VSCodeNeovim
Open file = TabOpen file = Buffer
Tab = One fileTab = Window layout

In Neovim, buffers are open files (even if not visible). Windows are viewports showing buffers. Tabs are collections of windows.

Think of it as: You can have many buffers, arrange them in windows, and save window arrangements as tabs.

The Explorer​

VSCode's sidebar explorer → FtVim's Neo-tree

  • <leader>e - Toggle explorer
  • a - Create file/folder
  • d - Delete
  • r - Rename
  • c - Copy
  • p - Paste
  • Enter - Open file

Integrated Terminal​

VSCode: Ctrl+`
FtVim: <C-\> (Ctrl + backslash)

The terminal floats over your editor. Press the same key to hide it.

Settings​

VSCode: Ctrl+, opens settings GUI
FtVim: Edit ~/.config/nvim/lua/plugins/*.lua

Quick Tips for Transitioning​

1. Don't Fight Modal Editing​

It feels strange at first, but modal editing is more efficient. Stick with it for a week.

2. Learn Motions Gradually​

Start with basics:

  • h j k l - Movement
  • w b - Word movement
  • gg G - Start/end of file
  • 0 $ - Start/end of line

3. Use Which-Key​

Press <leader> (Space) and wait. FtVim shows all available commands!

4. Master the Dot Command​

. repeats your last change. It's incredibly powerful.

Example:

  1. ciw - Change inner word
  2. Type new word
  3. Esc
  4. Move to next word
  5. . - Repeat the change!

5. Embrace Text Objects​

Instead of selecting with mouse:

  • diw - Delete inner word
  • ci" - Change inside quotes
  • da{ - Delete around braces
  • vip - Select inner paragraph

6. Use Registers for Multiple Clipboards​

"ay - Yank to register a
"ap - Paste from register a

You have 26 registers (a-z)!

Your First Week​

Day 1-2: Survival Mode​

  • Focus on i, Esc, :w, :q
  • Use <leader>ff to find files
  • Use the mouse if needed

Day 3-4: Basic Motions​

  • Practice h j k l movement
  • Learn w b e word motions
  • Try 0 $ gg G jumps

Day 5-7: Editing Commands​

  • d (delete), c (change), y (yank)
  • Combine with motions: dw, c$, yy
  • Use . to repeat

Week 2+: Advanced Features​

  • Text objects (ciw, da{)
  • Macros (q to record)
  • Marks (m to set, ' to jump)

Getting Help​

If you're stuck:

  1. Press <leader> to see available commands
  2. :help <topic> for built-in docs
  3. Check Troubleshooting for common issues
  4. Tips and Tricks for more techniques

Remember: Every Vim expert was once a beginner. The learning curve is worth it!