Skip to content

Latest commit

 

History

History
486 lines (347 loc) · 15.2 KB

vim.md

File metadata and controls

486 lines (347 loc) · 15.2 KB
title date icon background tags categories intro
Vim
2020-11-25 10:28:43 -0800
icon-vim
bg-green-600
vi
editor
terminal
text
Toolkit
[Vim](http://www.vim.org/) is a very efficient text editor. This reference was made for Vim 8.0. For shortcut notation.

Getting started {.cols-3}

Navigating {.row-span-3}

Shortcut Description
h j k l Arrow keys
<C-U> | <C-D> Half-page up/down
<C-B> | <C-F> Page up/down
{.shortcuts}

Words

Shortcut Description
b | w Previous/next word
ge | e Previous/next end of word
{.shortcuts}

Line

Shortcut Description
0 (zero) Start of line
^ Start of line (after whitespace)
$ End of line
{.shortcuts}

Character

Shortcut Description
fc Go forward to character c
Fc Go backward to character c
{.shortcuts}

Document

Shortcut Description
gg First line
G Last line
:n Go to line n
nG Go to line n
{.shortcuts}

Window

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}

Search

Shortcut Description
n Next matching search pattern
N Previous match
* Next whole word under cursor
# Previous whole word under cursor
{.shortcuts}

Tab pages

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

Editing

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}

Exiting

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}

Clipboard

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}

Visual mode

Shortcut Description
v Enter visual mode
V Enter visual line mode
<C-V> Enter visual block mode
{.shortcuts}

In visual mode

Shortcut Description
d | x Delete selection
s Replace selection
y Yank selection (Copy)
{.shortcuts}

Exiting insert mode

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 {.cols-3}

Usage {.secondary}

Operators let you operate in a range of text (defined by motion). These are performed in normal mode.

Shortcut Description
d w
Operator Motion

Operators list

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

Examples

Combine operators with motions to use them. {.setup}

Shortcut Description
dd (repeat the letter) Delete current line
dw Delete to next word
db Delete to beginning of word
2dd Delete 2 lines
dip Delete a text object (inside paragraph)
(in visual mode) d Delete selection

See :help motion.txt

Text objects {.cols-3}

Usage {.secondary}

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}

Text objects {.row-span-2}

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}

Examples {.row-span-2}

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.

Diff

vimdiff file1 file2 [file3]

See differences between files.

Misc {.cols-3}

Folds {.row-span-3}

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).

Navigation

Shortcut Description
% Nearest/matching {[()]}
[( [{ [< Previous ( or { or <
]) Next

| [m | Previous method start | | [M | Previous method end | {.shortcuts}

Case

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.

Counters

Shortcut Description
<C-A> Increment number
<C-X> Decrement
{.shortcuts}

Windows

Shortcut Description
z{height}<Cr> Resize pane to {height} lines tall

Text alignment {.row-span-1}

:center [width]
:right [width]
:left

See :help formatting

Calculator

Shortcut Description
<C-R>=128/2 Shows the result of the division : '64'

Do this in insert mode.

Tags {.row-span-2 .col-span-2}

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}

Exiting with an error

:cq
:cquit

Works like :qa, but throws an error. Great for aborting Git commands.

Jumping

Shortcut Description
<C-O> Go back to previous location
<C-I> Go forward

| gf | Go to file in cursor | {.shortcuts}

Marks {.col-span-2 .row-span-2}

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}

Misc

Shortcut Description
. Repeat last command
]p Paste under the current indentation level

| :set ff=unix | Convert Windows line endings to Unix line endings | {.shortcuts}

Command line

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}

Spell checking {.col-span-3}

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

Also see