Download as pdf or txt
Download as pdf or txt
You are on page 1of 1

HOW-TO make Vim not suck Out of the Box: :help statusline :set nocompatible ruler laststatus=2 showcmd

showmode number Search :set incsearch ignorecase smartcase hlsearch Remove useless splash screen
Best tips: http://vim.wikia.com/ Best scripts: http://www.vim.org/scripts/index.php :map <F9> :e $HOME/_vimrc<CR> :map <F6> :so $HOME/_vimrc<CR>
~ ! # $ % ^ & * ( ) _ +
`
13 1
2 3
3
4 5 6 7 8
8
9 0 - =
2
14
^w
12 10 9
E R T Y U I O P { }
e r t y
0
2
u i !insert o p
0
[ ]
7 10 15
D F G H J K L : "
0
|
d
0
2
f g
6
h j k l ;
16
' \
\
Ctrl ^
7,11 9,16 15
Unused & Duplicate keys
Shift " 13
14
15
Legend:
16 The search direction is relative; next is the initial direction, previous is the opposite direction. n ; repeat same initial direction find. N , repeat opposite initial direction find. Note: ; , only searches cursor line, n N searches buffer.
Register name (0-9a-zA-Z) required :r file insert file \ :map \ :Explore<CR> manually type <,C,R,>
Motion req.; act between cursor & dst :w save :gui switch to GUI :ts list active tags 0 " before del/copy/paste to use register :buffers list files
Command :q quit :q! quit w/o save ^] jump to tag under cursor "+x cut to system clipboard reg. '+' blank file/buffer
Command and enter insert mode :e <file> edit file in new buffer ^t restore cursor before tag jump "+gP paste from system clipboard :bn next file
Moves cursor or defines range for op :source % ^p complete word 1 Number before any action repeats it :bp prev file
Search (! = reverse, " = forward) :exec '...' do cmd :ta Foo manual jump to tag 'Foo' 2p paste twice 3. repeat thrice :bd close file
ctags / diffs / folding 2 Repeat op to act on current line :bd!force close
Code formatting, whitespace, etc. soft ^ ! Start of Line 1st non-whitespace yy copy line dd del line :set lines=#
Extended functionality; req. extra chars hard 0 ! Start of Line column 0 [c prev diff << undent line >> indent line :set columns=#
Char arg req. $ " End of Line ]c next diff 3 # highlight words under cursor :winpos # # GUI
:help modes | move col 0 #| move col # :diffupdate :hi DiffText gui=none 4 ZZ save & quit ZQ quit w/o save
n Normal Esc ^[ ^c ^b page ! ^f page " resync :hi DiffDelete 5 zz center cursor line in window :help windows
i Insert a i r s ^u # page ! ^d # page " zh scroll left zl scroll right ^w or :wincmd
v Visual v V ^v ^q ^e scroll line ! ^y scroll line " zt scroll top zb scroll bottom
o Op pending c d y < > 1g start of file 0g end of file zR fold remove :changes 6 gg top of file
c Command Line : / ? ! #g goto line # G end of file zo fold open g; older change gf open file under cursor
word ( src , # , # len ); [[ begin this func { zc fold close g, newer change 7 ^a incr # under cursor (Dec / Hex)
]] begin next func { zi invert all ^x decr # under cursor (Dec / Hex)
WORD Foo ( src , # , # len ); :set matchpairs=(:),{:},[:],<:>,?:\: zr fold reduce 8 * start a "new" search
Startup % goto matching { } < > [ ] zm fold more :syntax enable
vim <filename> +123 goto line 123 :set filetype= ^p ^n next
vim <file> -t Foo edit at tag 'Foo' :s/Foo/Bar find Foo replace w/ Bar c cpp sh make perl python ^d undent ^t indent
vim <file> -c "/Foo" cmd: find 'Foo' & edit :s/Foo/Bar/g ...all instances on line q start recording noLe: chose only CnL Lype! ^x ^f filename completion :sp [<filename>]
GUI vim -g or gvim start GUI ver. :%s/Foo/Bar apply to whole file @ playback ^s spelling :set spell! edit in split window
GUI Linux :set guifont=ProggyTinyTT\ 12 cur line, cur line + # lines q stop recording :set fileformat= ^k dictionary ]s next bad
GUI OSX :set guifont=ProggyTiny\:h11 $ last line '< start of select @@ repeat unix or dos or mac ^t thesaurus :help spell :marks ` ' ^o
diff gvimdiff <file1> <file2> [<file3>] '> end of select then :w to convert ^r paste register 0-9a-zA-Z or $ ma mark local 'a'
bug Broken Keys Ctrl-I = Tab, Ctrl-[ = ESC = < > << >> :set tabstop=# set tab stop every #th col + clipboard (or '*') 'A goto global 'A'
Vim is still unable to map certain keys for your own use$ :set backspace=indent,eol,start :set expandtab! toggle hard/soft tabs " last del/copy % filename '' prev location
Caps, Ctrl-1, Ctrl-Shift-1, Ctrl-I, Ctrl-\, etc. allow backspace join lines :set listchars= tab:>-:trail:-,nbsp:%,eol:$ :set numbers! toggle line numbers
0 See: src/ops.c -c "/valid_yank_reg" for " reg. names :set list! toggle whitespace :set wrap! toggle linewrap display :Explore or :e .
6 See: src/normal.c -c "/nv_cmds" for g extra cmds :set autoindent! :set showmatch highlite matching ()
11 See: src/edit.c -c "/ctrl_x_msgs" for ^x insert cmds :set lisp lisp indent mode noremap + :s/^/\/\//<CR> block comment noremap - :s/^\/\///<CR> uncomment one of buffer last
:set shiftwidth=# indent width for ai
toggle auto-indent visible right margin indicator
Modes
Macro
Cmd
Code

:set colorcolumn=80
Ins
Move
Op
exec cmds in cur file
g z Z ^w ' " `
:help cmdline
Normal
Vim 7.3+
:version
Ctrl 1
x
1
record
macro
window$
WORD "
word "
decr. #
Ctrl ` Ctrl @
:suspend
$
s
toggle case
S
block select
ex mode
X
append
:set browsedir=
! "
\ Ctrl-K Ctrl-S (free)
Ctrl-L (redraw)
` near dup of '
Ctrl-Q = Ctrl-V
Ctrl-J = Ctrl-M = ^N
undent
2
> indent
2
? find !
.
repeat
cmd
/ find "
:buffer #
Windows
Cursor Bookmarks
File / Directory
:new
"prev"
prev auto-complete
10
12
f/F/t/T
16
Extra
tag
Find
:set shortmess+=I
begin
sentence
Ctrl ^ Ctrl 7 Ctrl 8 Ctrl 9 Ctrl 0
goto
match
%
goto col#
Ctrl \
hard %
end
sentence
cur line
!
"
cmd line
file/cursor info
goto eof /
goto line#
until char %
prev
identifier
Tab
Caps
goto mark
incr. #
extern filter
append &
end
WORD "
subst line
subst char
scroll line !
half page "
end
word "
A
a
Normal / Cancel block select
find char % extra
replace
char
& find char
page !
page " Ctrl '
Ctrl / Ctrl . Ctrl , Ctrl M
Ctrl H Ctrl J
goto mark
%
register
Bottom
screen
# &
"
Top screen
man page
identifier
misc.
:redo
paste
!
Ctrl _ Ctrl 5 Ctrl 4
undo line
undo
Ctrl I Normal
soft %
next
identifier
copy
& repeat :s
insert %
ctags return
# until char Replace
M
m
Ctrl 3
http:/michael.PeopleOfHonorOnly.com/vim/
!"#$%&'( 2011
May be freely dlsLrlbuLed!
Sharlng ls Carlng.
paragraph
"
auto-
format
Ctrl ;
paste
!
paragraph
misc.
redraw
open
open
prev mark scroll line "
copy line
half page !
select
chars
"next"
f/F/t/T
Join lines
Ctrl =
,
ctags identifier
<
v
9
B ! WORD quit
4
extra
5
& del char C
del char % c b ! word change
0
2
change & V
select
lines
N
n
"prev"
find
find
"next"
11
:hi DiffAdd guifg=#rrggbb
:hi DiffChange guibg=#rrggbb
.,.+#
:help c_CTRL-R
Insert mode
Middle
screen
Esc
Revision 2.0
Sept. 11, 2011
Foo dst
Z
z
q
Q
dst
Note: There is no whitespace in-between 'Foo(src,' but before/after 'dst,'
del &
del
@
play
macro
W
w
set mark
Tags
Diff
Folding
Syntax
:help recording
Code
:help movement
:help range
w
c
n
s
v
o
=
h
j
k
l

:switch to next
:close!
:new
:split horz.
:vsplit vertical
:only maximize
all same size
move to win &
move to win "
move to win !
move to win %
Vim Cheat Sheet for Programmers
Changes
Convert <eol>

You might also like