Still, one of the best text editing tools in a console-only environment when speed and productivity matters.
Open
Edit file (vi/vim)
vi (filename)
vim cluster.yml
Edit multiple files same window split side by side (must use vim)
vim -O (filename1) (filename2) (filename...)
Edit multiple files same windows split stacked vertically (must use vim)
vim -o (filename1) (filename2) (filename...)
vim -p sharepoint_qa_job.yaml sharepoint_app_creds_qa.yaml
The
^
character means theCtrl
orcontrol
key. Use^w>
and^w<
to navigate between side-by-side windows
Close / Quit
:q
-----> quit
:qa
----> quit all windows
:q!
----> quit and discard
:qa!
---> quit and discard all windows
:w (filename)
--> save as filename
:wq
----> write to buffer and quit
:wqa
---> write to buffer and quit all
:wqa!
--> write to r/o buffer and quit all
:x
-----> save + quit
:sp
----> filename new split frame window
^w
--> go to next window
Search / Replace
/(str)
--> search for (str)
:s/reg/rep
--> first match current line
:s/reg/rep/g
--> all matches current line
:%s/reg/rep/g
--> all matches globally
:%s/reg/rep/gc
--> all matches globally w/ prompt
Movement
l
--> right one character
h
--> left one character
k
--> up one line
j
--> down one line
0
--> beginning of line
$
--> end of line
w
W
--> beginning of next word / bigword
e
E
--> end of next word / bigword
b
B
--> beginning of prev word / bigword
(
)
--> beginning of prev / next sentence
{
}
--> beginning of prev / next paragraph
3l
--> move right 3 characters
4)
--> move next 4 sentences
2b
--> move prev 2 words
2}
--> move next 2 paragraphs
^b
--> page up
^f
--> page down
#g
--> go to line number
n
N
--> repeat search / backward
Modify
Variations on cut, copy, paste that modify text from command mode
d
% delete, y
% yank, c
% replace
dd
yy
cc
--> current line and newline
d$
y$
c$
--> from cursor to end of line
d^
y^
c^
--> from cursor to start of line
dG
yG
cG
--> all lines from cursor to bottom of doc
dgg
ygg
cgg
--> all lines from cursor to top of doc
kdgg
kygg
kcgg
--> all lines above cursor
d(move)
y(move)
c(move)
--> from cursor to (move)
diw
yiw
ciw
--> current word
dw
yw
cw
to --> start of next word
d3w
y3w
c3w
--> next 3 words
3dd
3yy
3cc
--> next 3 lines
d)
y)
c)
--> remainder of sentence
d}
y}
c}
--> remainder of paragraph
d
% y
% c
% to matching (
)
, {
}
and [
]
character
J
--> join next line to end of line
X
--> delete char under cursor
r(char)
--> replace (character) under cursor
u
--> undo!
.
--> repeat last command
Insert
These commands put you in insert mode. Here you can type in text, return
for new line, arrow keys to move cursor, and delete
. Get back to command mode with esc
.
i
a
--> edit before / after cursor
I
A
--> edit at beginning of line
o
O
--> add new line below / above, then insert
^A
--> to edit
Cut / Paste
Press V
to enter Visual mode
Move cursor to highlight text
Press d
to cut, y
to copy
Move to target position
Press P
to paste after cursor, p
to paste before cursor
Settings
^D
:set autoindent
--> turn on indentation
:set tabstop=(num)
--> set tab size
:set nu
--> turn on line numbers
:set nonu
--> turn off line numbers
:set h
--> turn on highlighting
:set noh
--> turn off highlighting
To always show line numbers -> add ":set number" to ~/.vimrc
Ctrl+z
--> followed by kill %1
to kill session
ZQ
--> to eliminate "Output not to a terminal" warning