wiki-js/Linux/vim.md

131 lines
3.1 KiB
Markdown

---
title: Vim
description:
published: true
date: 2025-10-13T08:08:35.675Z
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 |
| `<Esc>` | 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 |
| `*` | Seach for current word |
## 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 |
## File Navigation
| Command | Description |
|----------|--------------|
| Next editor | `:bn` |
| Previous editor | `:bp` |
| Close current | `:bd` |
| List buffers | `:ls` |
| Jump to buffer N | `:bN` |
## 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.useCtrlKeys": true,
"vim.handleKeys": {
"<C-p>": false,
"<C-n>": false,
"<C-t>": false,
"<C-Tab>": false
},
"vim.normalModeKeyBindingsNonRecursive": [
// Easier access to { and }
{ "before": ["å"], "after": ["{"] },
{ "before": ["¨"], "after": ["}"] },
// Easier access to [ and ]
{ "before": ["ö"], "after": ["["] },
{ "before": ["ä"], "after": ["]"] },
{ "before": ["§"], "after": ["$"] },
]
```