## Basics | Motion | Effect | | ------- | -------------------------------------- | | `j`/`k` | Down/up | | `h`/`l` | Left/right | | `w`/`b` | Move forward/backward by word | | `e` | Move to end of current word | | `0` | Beginning of line | | `^` | First non-whitespace character of line | | `
| End of line | ## Editing | Motion | Effect | | -------- | ----------------------------- | | `x` | Delete character under cursor | | `r` | Replace single character | | `dd` | Delete entire line | | `yy` | Yank (copy) entire line | | `p` | Paste after cursor | | `P` | Paste before cursor | | `u` | Undo | | `ctrl+r` | Redo | ## Mode Switching | Motion | Effect | | ------ | ------------------------------ | | `i` | Insert before cursor | | `a` | Insert after cursor | | `I` | Insert at beginning of line | | `A` | Insert at end of line | | `o` | Open new line above and insert | | `O` | Open new line below and insert | | `Esc` | Return to normal mode | ## Deleting Words | Motion | Effect | | ------ | ---------------------------------------------------------------------- | | `dw` | Delete from cursor to start of next word | | `db` | Delete from cursor backward to start of current/previous word | | `d3w` | Delete 3 words forward | | `d2b` | Delete 2 words backward | | `dW` | Delete forward to next whitespace (treats punctuation as part of word) | | `diw` | Delete inner word (deletes whole word regardless of cursor position) | | `daw` | Delete a word including surrounding whitespace | ## Working with Parentheses, Braces, and Brackets | Motion | Effect | | -------------- | -------------------------------------------------------------- | | `di(` or `di)` | Delete everything inside parentheses | | `da(` | Delete everything inside parentheses including the parentheses | | `di{` or `di}` | Delete everything inside braces | | `da{` | Delete everything inside braces including the braces | | `ci(` | Change (delete and enter insert mode) inside parentheses | | `yi{` | Yank (copy) everything inside braces | The pattern is `d`/`c`/`y` + `i`/`a` + delimiter, where `i` means "inner" (just the content) and `a` means "around" (including the delimiters).