title | date | icon | background | tags | categories | intro | |||||
---|---|---|---|---|---|---|---|---|---|---|---|
Vim |
2020-11-25 10:28:43 -0800 |
icon-vim |
bg-green-600 |
|
|
[Vim](http://www.vim.org/) is a very efficient text editor. This reference was made for Vim 8.0.
For shortcut notation.
|
Shortcut | Description |
---|---|
h j k l |
Arrow keys |
<C-U> | <C-D> |
Half-page up/down |
<C-B> | <C-F> |
Page up/down |
{.shortcuts} |
Shortcut | Description |
---|---|
b | w |
Previous/next word |
ge | e |
Previous/next end of word |
{.shortcuts} |
Shortcut | Description |
---|---|
0 (zero) |
Start of line |
^ |
Start of line (after whitespace) |
$ |
End of line |
{.shortcuts} |
Shortcut | Description |
---|---|
fc |
Go forward to character c |
Fc |
Go backward to character c |
{.shortcuts} |
Shortcut | Description |
---|---|
gg |
First line |
G |
Last line |
:n |
Go to line n |
nG |
Go to line n |
{.shortcuts} |
Shortcut | Description |
---|---|
zz |
Center this line |
zt |
Top this line |
zb |
Bottom this line |
H |
Move to top of screen |
M |
Move to middle of screen |
L |
Move to bottom of screen |
{.shortcuts} |
Shortcut | Description |
---|---|
n |
Next matching search pattern |
N |
Previous match |
* |
Next whole word under cursor |
# |
Previous whole word under cursor |
{.shortcuts} |
Shortcut | Description |
---|---|
:tabedit [file] |
Edit file in a new tab |
:tabfind [file] |
Open file if exists in new tab |
:tabclose |
Close current tab |
:tabs |
List all tabs |
:tabfirst |
Go to first tab |
:tablast |
Go to last tab |
:tabn |
Go to next tab |
:tabp |
Go to previous tab |
Shortcut | Description |
---|---|
a |
Append |
A |
Append from end of line |
i |
Insert |
o |
Next line |
O |
Previous line |
| s
| Delete char and insert |
| S
| Delete line and insert |
| C
| Delete until end of line and insert |
| r
| Replace one character |
| R
| Enter Replace mode |
| u
| Undo changes |
| <C-R>
| Redo changes |
{.shortcuts}
Shortcut | Description |
---|---|
:qa |
Close all files |
:qa! |
Close all files, abandon changes |
| :w
| Save |
| :wq
| :x
| Save and close file |
| :q
| Close file |
| :q!
| Close file, abandon changes |
| ZZ
| Save and quit |
| ZQ
| Quit without checking changes |
{.shortcuts}
Shortcut | Description |
---|---|
x |
Delete character |
| dd
| Delete line (Cut) |
| yy
| Yank line (Copy) |
| p
| Paste |
| P
| Paste before |
| "*p
| "+p
| Paste from system clipboard |
| "*y
| "+y
| Paste to system clipboard |
{.shortcuts}
Shortcut | Description |
---|---|
v |
Enter visual mode |
V |
Enter visual line mode |
<C-V> |
Enter visual block mode |
{.shortcuts} |
Shortcut | Description |
---|---|
d | x |
Delete selection |
s |
Replace selection |
y |
Yank selection (Copy) |
{.shortcuts} |
Shortcut | Description |
---|---|
Esc | <C-[> |
Exit insert mode |
<C-C> |
Exit insert mode, and abort current command |
{.shortcuts} |
See Operators for other things you can do.
Operators let you operate in a range of text (defined by motion). These are performed in normal mode.
Shortcut | Description |
---|---|
d |
w |
Operator | Motion |
Shortcut | Description |
---|---|
d |
Delete |
y |
Yank (copy) |
c |
Change (delete then insert) |
| >
| Indent right |
| <
| Indent left |
| =
| Autoindent |
| g~
| Swap case |
| gU
| Uppercase |
| gu
| Lowercase |
| !
| Filter through external program |
{.shortcuts}
See :help operator
Combine operators with motions to use them. {.setup}
Shortcut | Description |
---|---|
d d |
(repeat the letter) Delete current line |
d w |
Delete to next word |
d b |
Delete to beginning of word |
2dd |
Delete 2 lines |
d ip |
Delete a text object (inside paragraph) |
(in visual mode) d |
Delete selection |
See :help motion.txt
Text objects let you operate (with an operator) in or around text blocks (objects). {.setup}
Shortcut | Description |
---|---|
v |
i |
Operator | [i]nside or [a]round |
{.css-breakdown} |
Shortcut | Description |
---|---|
p |
Paragraph |
w |
Word |
s |
Sentence |
| [
(
{
<
| A [], (), or {} block |
| '
"
`
| A quoted string |
| b
| A block [( |
| B
| A block in [{ |
| t
| A XML tag block |
{.shortcuts}
Shortcut | Description |
---|---|
vip |
Select paragraph |
vipipipip |
Select more |
| yip
| Yank inner paragraph |
| yap
| Yank paragraph (including newline) |
| dip
| Delete inner paragraph |
| cip
| Change inner paragraph |
{.shortcuts}
See Operators for other things you can do.
vimdiff file1 file2 [file3]
See differences between files.
Shortcut | Description |
---|---|
zo | zO |
Open |
zc | zC |
Close |
za | zA |
Toggle |
| zv
| Open folds for this line |
| zM
| Close all |
| zR
| Open all |
| zm
| Fold more (foldlevel += 1) |
| zr
| Fold less (foldlevel -= 1) |
| zx
| Update folds |
{.shortcuts}
Uppercase ones are recursive (eg, zO
is open recursively).
Shortcut | Description |
---|---|
% |
Nearest/matching {[()]} |
[( [{ [< |
Previous ( or { or < |
]) |
Next |
| [m
| Previous method start |
| [M
| Previous method end |
{.shortcuts}
Shortcut | Description |
---|---|
~ |
Toggle case (Case => cASE) |
gU |
Uppercase |
gu |
Lowercase |
| gUU
| Uppercase current line (also gUgU
) |
| guu
| Lowercase current line (also gugu
) |
{.shortcuts}
Do these in visual or normal mode.
Shortcut | Description |
---|---|
<C-A> |
Increment number |
<C-X> |
Decrement |
{.shortcuts} |
Shortcut | Description |
---|---|
z{height}<Cr> |
Resize pane to {height} lines tall |
:center [width]
:right [width]
:left
See :help formatting
Shortcut | Description |
---|---|
<C-R>=128/2 |
Shows the result of the division : '64' |
Do this in insert mode.
Shortcut | Description |
---|---|
:tag Classname |
Jump to first definition of Classname |
| <C-]>
| Jump to definition |
| g]
| See all definitions |
| <C-T>
| Go back to last tag |
| <C-O> <C-I>
| Back/forward |
| :tselect Classname
| Find definitions of Classname |
| :tjump Classname
| Find definitions of Classname (auto-select 1st) |
{.shortcuts}
:cq
:cquit
Works like :qa
, but throws an error. Great for aborting Git commands.
Shortcut | Description |
---|---|
<C-O> |
Go back to previous location |
<C-I> |
Go forward |
| gf
| Go to file in cursor |
{.shortcuts}
Shortcut | Description |
---|---|
`^ |
Last position of cursor in insert mode |
`. |
Last change in current buffer |
`" |
Last exited current buffer |
`0 |
In last file edited |
'' |
Back to line in current buffer where jumped from |
`` |
Back to position in current buffer where jumped from |
`[ |
To beginning of previously changed or yanked text |
`] |
To end of previously changed or yanked text |
`< |
To beginning of last visual selection |
`> |
To end of last visual selection |
| ma
| Mark this cursor position as a
|
| `a
| Jump to the cursor position a
|
| 'a
| Jump to the beginning of the line with position a
|
| d'a
| Delete from current line to line of mark a
|
| d`a
| Delete from current position to position of mark a
|
| c'a
| Change text from current line to line of a
|
| y`a
| Yank text from current position to position of a
|
| :marks
| List all current marks |
| :delm a
| Delete mark a
|
| :delm a-d
| Delete marks a
, b
, c
, d
|
| :delm abc
| Delete marks a
, b
, c
|
{.shortcuts}
Shortcut | Description |
---|---|
. |
Repeat last command |
]p |
Paste under the current indentation level |
| :set ff=unix
| Convert Windows line endings to Unix line endings |
{.shortcuts}
Shortcut | Description |
---|---|
<C-R><C-W> |
Insert current word into the command line |
<C-R>" |
Paste from " register |
<C-X><C-F> |
Auto-completion of path in insert mode |
{.shortcuts} |
Shortcut | Description |
---|---|
:set spell spelllang=en_us |
Turn on US English spell checking |
]s |
Move to next misspelled word after the cursor |
[s |
Move to previous misspelled word before the cursor |
z= |
Suggest spellings for the word under/after the cursor |
zg |
Add word to spell list |
zw |
Mark word as bad/mispelling |
zu / C-X (Insert Mode) |
Suggest words for bad word under cursor from spellfile |
{.shortcuts} |
See :help spell
- Vim cheatsheet (vim.rotrr.com)
- Vim documentation (vimdoc.sourceforge.net)
- Interactive Vim tutorial (openvim.com)