Skip to content

Latest commit

 

History

History
191 lines (93 loc) · 3.27 KB

vim.md

File metadata and controls

191 lines (93 loc) · 3.27 KB
layout title
default
VIM

{{ page.title }}


Cursor movement

h - move left

j - move down

k - move up

l - move right

w - jump by start of words (punctuation considered words)

W - jump by words (spaces separate words)

e - jump to end of words (punctuation considered words)

E - jump to end of words (no punctuation)

b - jump backward by words (punctuation considered words)

B - jump backward by words (no punctuation)

0 - (zero) start of line

^ - first non-blank character of line

$ - end of line

G - Go To command (prefix with number - 5G goes to line 5)

Note: Prefix a cursor movement command with a number to repeat it. For example, 4j moves down 4 lines.

Insert Mode - Inserting/Appending text

i - start insert mode at cursor

I - insert at the beginning of the line

a - append after the cursor

A - append at the end of the line

o - open (append) blank line below current line (no need to press return)

O - open blank line above current line

ea - append at end of word

Esc - exit insert mode

Editing

r- replace a single character (does not use insert mode)

J- join line below to the current one

cc - change (replace) an entire line

cw - change (replace) to the end of word

c$ - change (replace) to the end of line

s- delete character at cursor and subsitute text

S- delete line at cursor and substitute text (same as cc)

xp - transpose two letters (delete and paste, technically)

u- undo

.- repeat last command

Marking text (visual mode)

v - start visual mode, mark lines, then do command (such as y-yank)

V - start Linewise visual mode

o - move to other end of marked area

Ctrl+v - start visual block mode

O - move to Other corner of block

aw - mark a word

ab - a () block (with braces)

aB - a {} block (with brackets)

ib - inner () block

iB - inner {} block

Esc - exit visual mode

Visual commands

> - shift right

< - shift left

y - yank (copy) marked text

d - delete marked text

~ - switch case

Cut and Paste

yy - yank (copy) a line

2yy - yank 2 lines

yw - yank word

y$ - yank to end of line

p - put (paste) the clipboard after cursor

P - put (paste) before cursor

dd - delete (cut) a line

dw - delete (cut) the current word

x - delete (cut) current character

Exiting

:w - write (save) the file, but don't exit

:wq - write (save) and quit

:q - quit (fails if anything has changed)

:q! - quit and throw away changes

Search/Replace

/pattern - search for pattern

?pattern - search backward for pattern

n - repeat search in same direction

N - repeat search in opposite direction

:%s/old/new/g - replace all old with new throughout file

:%s/old/new/gc - replace all old with new throughout file with confirmations

Working with multiple files

:e filename - Edit a file in a new buffer

:bnext (or :bn) - go to next buffer

:bprev (of :bp) - go to previous buffer

:bd - delete a buffer (close a file)

:sp filename - Open a file in a new buffer and split window

ctrl+ws - Split windows

ctrl+ww - switch between windows

ctrl+wq - Quit a window

ctrl+wv - Split windows vertically

Another good vim commands cheatsheet and a vi introduction using the "cheat sheet" method