You are on page 1of 1

Copyleft

 ©  2011
Esc Normal
Revision 2.0
Sept. 11, 2011
Vim 7.3+
:version Vim Cheat Sheet for Programmers May  be  freely  distributed!
Sharing  is  Caring.
http:/michael.PeopleOfHonorOnly.com/vim/

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 :set shortmess+=I
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>
Ctrl ` Ctrl 1 Ctrl @ Ctrl 3 Ctrl 4 Ctrl 5 Ctrl ^ Ctrl 7 Ctrl 8 Ctrl 9 Ctrl 0 Ctrl _ Ctrl =


play prev goto next begin end
~ toggle case ! extern filter @• macro # identifier $ % match ^ soft ⇤ & repeat :s * identifier ( sentence ) sentence _ cur line + ↓
13 1 3 8 auto- 2
`• goto mark 1 2 3 4 5 6 7 8 9 0 hard ⇤ - ↑ = format
14 12 10 9
block select ^w• window… scroll line ↑ :redo ctags return scroll line ↓ half page ↑ Ctrl I prev mark ↑ Normal ctags identifier

end ↖ paragraph
Q ex mode W WORD ↘ E WORD ↘ R Replace T• ← until char Y copy line U undo line I insert ⇤ O open ⤒ P paste ⤒ { paragraph } ↘
record end replace 0 0
Tab q• w word ↘ e r t• until char → y copy u undo i insert o open ⤓ p paste ⤓ [• misc. ]• misc.


2
macro word ↘ char
7 10 15
incr. # half page ↓ page ↓ file/cursor info Ctrl H Ctrl J redraw Ctrl ; Ctrl ' Ctrl \
goto eof / man page Bottom 0 ⇤
A append ⇥ S subst line D del ⇥ F• ← find char G goto line# H Top screen J Join lines K identifier L screen : Ex cmd line "• register | goto col#
0 6 "next" 16 goto mark \
Caps a append s subst char d del f• find char → g• extra h ← j ↓ k ↑ l → ; '• \•

2
f/F/t/T ⇤
7,11 9,16 15
Ctrl ^ :suspend decr. # Normal / Cancel block select page ↑ ↓ Ctrl M Ctrl , Ctrl . Ctrl / Unused & Duplicate keys
4 select Middle 2 2 \ Ctrl-K Ctrl-S (free)
"prev"
Z• quit X ← del char C change ⇥ V B ↖ WORD N M < undent > indent ?• find ↖ 13 Ctrl-L (redraw)
Shift ⇧ lines find screen ` near dup of '
5 0 select find "prev" 16 repeat 14 Ctrl-Q = Ctrl-V
z• extra x del char → c change 2 v chars b ↖ word n "next" m• set mark , f/F/t/T
. cmd /• find ↘ 15 Ctrl-J = Ctrl-M = ^N

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.

Macro Register name (0-9a-zA-Z) required :help cmdline :r file insert file :help tags \ :map \ :Explore<CR> manually type <,C,R,> :buffer #
Op 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
Cmd Command :q quit :q! quit w/o save ^] jump to tag under cursor "+x cut to system clipboard reg. '+' :new blank file/buffer
Ins 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
Move Moves cursor or defines range for op :source % exec cmds in cur file ^p complete word 1 Number before any action repeats it :bp prev file
Find Search (↖ = reverse, ↘ = forward) :exec '...' do cmd :ta Foo manual jump to tag 'Foo' 2p paste twice 3. repeat thrice :bd close file
tag ctags / diffs / folding :help movement 2 Repeat op to act on current line :bd! force close
Code Code formatting, whitespace, etc. soft ^ ⇤ Start of Line 1st non-whitespace :help diff yy copy line dd del line :set lines=#
Extra Extended functionality; req. extra chars hard 0 ⇤ Start of Line column 0 [c prev diff :hi DiffAdd guifg=#rrggbb << undent line >> indent line :set columns=#
• Char arg req. g z Z ^w ' " ` … $ ⇥ End of Line ]c next diff :hi DiffChange guibg=#rrggbb 3 # highlight words under cursor :winpos # # GUI

Modes :help modes | move col 0 #| move col # :diffupdate :hi DiffText gui=none 4 ZZ save & quit ZQ quit w/o save Windows
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 ↓ :help folding :help changes zt scroll top zb scroll bottom w! :switch to next
o Op pending c d y < > 1g start of file 0g end of file zR fold remove :changes §6 gg top of file c! :close!
n! :new
c Command Line : / ? ! #g goto line # G end of file zo fold open g; older change gf open file under cursor
s! :split horz.
horz.
word Foo ( src , ␢ dst , ␢ len ); [[ begin this func { zc fold close g, newer change 7 ^a incr # under cursor (Dec / Hex) v! :vsplit vertical
Note: There is no whitespace in-between 'Foo(src,' but before/after 'dst,' ]] begin next func { zi invert all ^x decr # under cursor (Dec / Hex) o! :only maximize
maximize
WORD Foo ( src , ␢ dst , ␢ len ); :set matchpairs=(:),{:},[:],<:>,?:\: zr fold reduce :help syntax 8 * start a "new" search =! all same size
h! move to win ←
Startup % goto matching { } < > [ ] zm fold more :syntax enable Insert mode
9 ^p prev auto-complete ^n
j! move to win ↓
vim <filename> +123 goto line 123 :help range :set filetype= next k! move to win ↑
vim <file> … -t Foo edit at tag 'Foo' :s/Foo/Bar find Foo replace w/ Bar :help recording c cpp sh make perl python 10 ^d undent ^t indent l! move to win →
vim <file> … -c "/Foo" cmd: find 'Foo' & edit :s/Foo/Bar/g ...all instances on line q• start recording Note:  chose  only  ONE  type! §11 ^x• ^f filename completion !
:sp [<filename>]
GUI vim -g or gvim start GUI ver. :%s/Foo/Bar apply to whole file @• playback convert <eol> ^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 Cursor Bookmarks
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 12 ^r• paste register 0-9a-zA-Z or … ma mark local 'a'
bug Broken Keys Ctrl-I = Tab, Ctrl-[ = ESC Code = < > << >> :set tabstop=# set tab stop every #th col + clipboard (or '*') :help c_CTRL-R '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 File / Directory
0 See: src/ops.c -c "/valid_yank_reg" for "• reg. names :set shiftwidth=# indent width for ai :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! toggle auto-indent :set colorcolumn=80 visible right margin indicator :set showmatch highlite matching () :set browsedir=…
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

You might also like