--- title: Vim description: published: true date: 2025-10-11T17:04:22.883Z tags: editor: markdown dateCreated: 2025-10-11T16:38:44.398Z --- # Vim ## Insert | Command | Description | | - | - | | `i` | Insert before cursor | | `I` | Insert at start of line | | `a` | Insert after cursor | | `A` | Insert at end of line | | `o` | New line below | | `O` | New line above | | `` | Back to Normal mode | ## Navigation | Command | Description | | - | - | | `h` / `l` | Move left / right | | `j` / `k` | Move down / up | | `w` / `b` | Next / previous word | | `0` / `$` | Start / end of line | | `gg` / `G` | Start / end of file | | `Ctrl+d` / `Ctrl+u` | Half-page down / up | | `Ctrl+f` / `Ctrl+b` | Full-page down / up | | `:n` | Go to line `n` | ## Edit | Command | Description | | - | - | | `x` | Delete character | | `dd` | Delete (cut) line | | `yy` | Yank (copy) line | | `p` | Paste below | | `P` | Paste above | | `u` | Undo | | `Ctrl+r` | Redo | | `.` | Repeat last change | | `"+y` | Copy to system clipboard | | `"+p` | Paste from system clipboard | ## Search and Replace | Command | Description | | - | - | | `/pattern` | Search forward | | `?pattern` | Search backward | | `n` / `N` | Next / previous result | | `:%s/old/new/g` | Replace all in file | ## Indent, Format, Repeat | Command | Description | |----------|--------------| | `>>` / `<<` | Indent / unindent line | | `=` | Auto-indent selection | | `J` | Join line below | | `.` | Repeat last command | | `:set number` | Show line numbers | | `:noh` | Clear search highlight | | `:s/old/new/g` | Replace all in current line | | `:%s/old/new/gc` | Confirm each replacement | ## Visual Mode | Command | Description | |----------|--------------| | `v` | Start character selection | | `V` | Line selection | | `Ctrl+v` | Block selection | | `y` | Yank (copy) | | `d` | Delete | | `p` | Paste over selection | ## VS Code Integrations | Action | Shortcut | |--------|-----------| | Open command palette | `:action ShowCommands` or `Ctrl+Shift+P` | | Open file | `Ctrl+P` | | Toggle terminal | `Ctrl+\`` | | Split editor | `:vsplit` or `Ctrl+\` | | Switch editor group | `Ctrl+w w` | | Save | `:w` or `Ctrl+s` | | Quit | `:q` | | Save & Quit | `:wq` | ## settings.json ``` "vim.useSystemClipboard": true, "vim.hlsearch": true, "vim.ignorecase": true, "vim.smartcase": true, "vim.cursorStylePerMode.insert": "line", "vim.insertModeKeyBindings": [], "vim.leader": " ", "vim.normalModeKeyBindingsNonRecursive": [ // Easier access to { and } { "before": ["å"], "after": ["{"] }, { "before": ["¨"], "after": ["}"] }, // Easier access to [ and ] { "before": ["ö"], "after": ["["] }, { "before": ["ä"], "after": ["]"] }, { "before": ["§"], "after": ["$"] }, ] ```