Vim is an advanced CLI based text editor. Many key combinations used in Vim are easily associated with a memorable phrase. One effective way to use Vim is to associate phrases with Operators, Text Objects and Motions. Then compose a phrase for what you want to do. Start with an Operator followed by a Text Object or Motion. Prefix an Operator, Command or Motion with a number/count to extend it.
- Modes
- Operators
- Motions
- Text Objects
- Command-Lines
- Commands
- Insert Mode
- Terminology
- Caveats
- Useful Plugins
- Additional Information
- References
Essentially a Mode sets the available keyboard interactions. The default Mode is Normal when Vim is started.
Esc
- Normal –– Commands, Operators, Motions, Text Objects and navigation
i
- Insert –– Insert text, word and line completion
:
- Command-Line –– Vim internal Command-Lines, Operators and external Shell Commands
v
- Visual –– Visual selecting
TOC
Operators are generally used to delete or change text. A Motion or Text Object may be used after an Operator.
y
- Yank –– copy text
d
- Delete –– cut text
c
- Change –– cut and enter Insert Mode
>
- Indent –– shift text right
<
- Unindent –– shift text left
gU
- Uppercase –– make text uppercase
gu
- Lowercase –– make text lowercase
~
- Toggle Case –– toggle case of character(s)
!
- Shell Command –– External Filter
=
- Format automatically
TOC
Motions move the cursor and may be used after an Operator to define a text range in which to operate.
h
- Left –– cursor left one character
l
- Right –– cursor right one character
0
- First –– cursor to first character of line
^
- First –– cursor to first non-blank character of line
$
- End –– cursor to last character of line
g_
- Go to last –– cursor to last non-blank character of line
f<character>
- Find the next character after the cursor
F<character>
- Find the next character before the cursor
t<character>
- Till the next character after the cursor
T<character>
- Till the next character before the cursor
TOC
k
- Up –– cursor up one character
j
- Down –– cursor down character
TOC
w
- Word –– cursor to start of word
W
- Word –– cursor to start of word (non-blank characters separated by whitespace)
e
- End –– cursor to end of word
E
- End –– cursor to end of word (non-blank characters separated by whitespace)
b
- Back –– to begining of word before cursor
B
- Back –– to begining of word before cursor (non-blank characters separated by whitespace)
ge
- Go End –– to end of word before cursor
gE
- Go End –– to end of word before cursor (non-blank characters separated by whitespace)
TOC
)
- Sentence –– cusor forward a sentence
TOC
Ctrl
+f
- Forward –– cursor page down
Ctrl
+b
- Back –– cursor page up
H
- Home top line of window
M
- Middle line of window
L
- Last line of window
gg
- Go to top of file
G
- Go to end of file
#gt
- Go To tab number #
TOC
Text Objects may be used after an Operator to define a text range in which to operate.
w
- Word
s
- Sentence
p
- Paragraph
t
- Tag
i
- Inside
iw
- Inner Word
it
- Inner Tag
ip
- Inner Paragraph
as
- A Sentence
TOC
A Vim Command-Line should not be confused with a Command in Normal Mode or a Shell Command. Complete a Command-Line by Enter
or Return
key.
:h
- Help open help view
:q
- Quit quit current view. quits vim if no views are open
:q!
- Quit quit and ignore any modifications
:w
- Write buffer to file (save)
:wq
- Write and Quit (save, exit)
/
- Search after cursor for match –– Jump Motion
?
- Search before cursor for match –– Jump Motion
:edit!
- Reload reload current file ignoring any buffer modifications
:#,#m#
- Move Lines move line number range #,# to line number #
:noh
- No Highlights clear search highlights
:set paste
- Paste enable Insert Paste sub-mode which does not format pasted text
:set nopaste
- No Paste disable Insert Paste sub-mode
:!<shell-command>
- Interpret Shell Command
:%w !pbcopy
- Copy whole buffer to clipboard –– OS X specific
:%w !xclip -i -sel c
- Copy whole buffer to clipboard –– GNU/Linux Distribution specific
:%w !xsel -i -b
- Copy whole buffer to clipboard –– GNU/Linux Distribution specific
:%s/old/new/gc
- Substitute all old occurences with new throughout file with confirmations. similar to sed
:%s/\%Vold/new/gc
- Substitute Selection substitute in last visual selection all old occurences with new throughout file with confirmations.
TOC
:ls
- List numbered buffers (loaded files)
:ls!
- List numbered buffers including hidden ones
:#bw
- Buffer Wipeout –– wipeout buffer by # number
:b#
- Buffer Show –– show buffer by # number in current view
TOC
ToDo TOC
:tabnew <file>
- New Tab –– open file in a new tab
:tabnew +b#
- New Tab –– open existing buffer by number # in a new tab
:tabm #
- Tab Move –– move tab to position number #
:tab ball
- Tab All –– open all existing buffers in tabs
TOC
ToDo TOC
Normal Mode Commands which may or may not enter Insert Mode.
A
- Append to end of line
a
- Append after cursor
o
- Open new blank line below
O
- Open new blank line above
D
- Delete (cut) to end of line
C
- Change to end of line (delete, enter insert mode)
Y
- Yank (copy) whole line
p
- Paste after cursor
P
- Paste before cursor
Ctrl
+r
- Redo
.
- Repeat last command
u
- Undo
TOC
Ctrl
+n
- Next match –– Word completion
Ctrl
+p
- Previous match –– Word completion
Ctrl
+x
Ctrl
+l
- Line completion
TOC
Filter
- A program or Shell Command that accepts text at standard input, changes it in some
way, and sends it to standard output.
Shell Command
- Any external (outside of Vim) executable providing a command-line interface (CLI).
TOC
Substitution search pattern \n
matches a line-feed character whereas \n
does NOT insert a line-feed in the replacement (:%s/\n/\n/
). Try using \r
instead (:%s/\n/\r/
).
TOC
Tabulous - Enhanced tabline
Pathogen - Runtime path manager
NERDTree - File tree explorer
CtrlP - Fuzzy file finder
Repeat - Repeat plugin maps
Surround - Surrond text with characters
Commentary - Add code comments
Fugitive - Git wrapper
TOC
Vim.Org
VimDoc
VimGitHub
VimAwesome
VimAdventures
$ vimtutor
TOC
ViEmu.Com –– Vim cheat sheet
Vim.Rtorr.Com –– Vim cheat sheet
TuxRadar.Com –– Vim modes
TOC