-
Set cwd to current directory:
:cd %:p:h
-
Set
args
to all the files in cwd:args **/*
-
Delete all pattern matches in file
:g/MATCH BEGIN/ .,/MATCH END/d
-
Delete pattern match in many files and save all changed Make sure your
:args
are set to the correct files (check this with just:args
):argdo g/MATCH BEGIN/ .,/MATCH END/d | update
-
Vsplit multiple files at once
vim -O <file1> <file2> <file3> <etc...>
-
Find & replace all instances of whole word in file
:% s/\<WORD TO FIND\>/NEW WORD/g
-
-
Save suzmas/1f9f0ca4beb9d7dcebd859b8b8bbbda1 to your computer and use it in GitHub Desktop.
Delete, Cut, Copy, and Paste
Delete / Cut
-
Delete n characters forward / Delete n characters backward
nx / nX
-
Delete (can be chained with movement keys) / Delete from cursor to end of line
d / D
- Example:
dw
-> deletes next word
- Example:
-
Delete then enter insert mode (can be chained with movement keys) / Delete from cursor to end of line then enter insert mode
c / C
-
Delete whole line / Delete whole line and enter insert mode
dd / cc
Copy
-
Copy with movement key
y
- Example:
yw
-> copy next word
- Example:
-
Copy current line
yy
-
Copy selected text
v (enters visual mode) + (movement keys)
, theny
to copy selected text; OR
ny
-> where n is number of characters -
Copy multiple lines
V (enters visual mode) + (movement keys)
, theny
to copy selected lines; OR
nyy
-> where n is number of lines
Paste
- Paste forwards / Paste backwards
p / P
Other Stuff
-
Insert after next character / Insert at end of line:
a / A
-
Insert at cursor / Insert at beginning of line:
i / I
-
Insert at end of word:
ea
-
Change / Delete based on character:
ct<char>
ordt<char>
-> change/delete up to given next character (exclusive of character)
cf<char>
ordf<char>
-> change/delete from cursor to given next character (inclusive of character)- Sample text: " I'm text - " =>
dt-
Deletes all text up to -, whereasdf-
deletes all text including -
- Sample text: " I'm text - " =>
-
Change / Delete inner match within current line:
ci<char>
ordi<char>
-> change/delete inside matched pair (exclusive of character)
ca<char>
orda<char>
-> change/delete around matched pair (inclusive of character)- Sample text: " [This is some text] " =>
ci[
Changes text inside '[ ]', whereasca[
changes all text including '[ ]' - These only work for paired characters like ' ', " ", { }, [ ], ( ),
- There's also a really handy one
cit
ordit
. This says change/delete inner tags.- Sample:
<h1>Hello Suz!</h1>
, will remove "Hello Suz!"
- Sample:
- Sample text: " [This is some text] " =>
-
Repeat last command:
.
(just a period) -
Insert line below / Insert line above:
o / O
(Use this these a lot)
Different Ways To Save and Quit
ZZ
:wq
:x
Movement
Beginning of line:
0
End of line:
$
First non-white space character on that line:
^
Jump forward to start of word (words include punctuation) / jump forward to start of word separated by spaces
w / W
H , m n i ' I N '
H m n i ' N
Jump backwards to start of word (words include punctuation) / jump backwards to start of word separated by spaces
b / B
Jump forward to last character of word (words include punctuation) / jump forward to last character of word separated by spaces
e / E