Joe's
Digital Garden

Vim Grimoire

Grimoire for VIM commands

File Management

Quiting:

:q      close
zq      quit all
zz      save and quit
:StripTrailingWhitespace

Nerd Tree:

<ctrl>+n            toggle nerd tree
o/O                 open file or directory / open recursively
x/X                 close file or directory / close recursively
c                   open directory in new NDT pane
C                   make directory root
u/U                 move root directory up / move but stay
r/R                 refresh directory / refresh root
p/P                 go to parent / go to root
f                   toogle file filters
:Bookmark [<name>]  add book mark with name
D                   delete bookmark
m                   new, delete, or move files

Split & Tab Management

Splits:

<ctrl>+h  hop left
<ctrl>+j  hop down
<ctrl>+k  hop up
<ctrl>+l  hop right

:sp     open horizontal split
:vsp    open vertical split

<ctrl>+w o    fullscreen pane

Tabs:

gt      next tab
gT      last tab
tabm #  go to tab #

NerdTree:

s       open in vertical split
i       open in horizontal split
t       open in tab

Fuzzy File Open

<ctrl>+p    start file search
<ctrl>+v    open in vertical split
<ctrl>+s    open in horizontal 
<ctrl>+t    open in tab
<ctrl>+y    creae a new file

Folds:

zc  closes fold

Modes

Vim Modes:

a/e/i       insert mode
escape      command mode
v           visual mode
<ctrl>+v    block visual mode
f3      toggle numbers

Marks

Marks allow us to dog ear a spot in the code to return.

m+[a-z]         Add a mark in the file at this point
m+[A-Z]         Add a global mark at this point
'[a-zA-Z]       Return to line of the mark
`[a-zA-Z]       Return to the exact position of the mark
:marks          Show current marks
:delm [a-zA-Z]  Delete the marka
:delm!          Clear all marks

Registers

Registers are where text that has been deleted or cut goes

"a y    Add register A for text yanked by y
"a p    Put text in register a
0-9     Registers for the last ten yanks/deletes

Text Manipulation

Copying:

y       copy
p       paste
x       cut
space+v paste from clipboard
space+y copy to clipboard
.       Repeat last input

Deleting:

d       delete character
d$      delete to end of line
dGG     delete to end of file
dd      delete line

Undo/Redo:

r       redo
u       undo

Search & Replace:

:%s/forest/tree   Replace forest with tree
:%s/){/\r\t{/     Add  new line between ")" and "{"
:%s/public function \(.*\))/private function \1)
    Match public function _name_ and replace with private function _name

Moving About

Character movement:

h       left
j       down
k       up
l       right

Jump about:

#G      jump to line #
^       start of line
$       end of line
b       back a word
w       forward a word

Search:

/       search
n       next search match
N       last search match

Fuzzy Search

f5          purge cache
<ctrl>+r    regex mode
<ctrl>+d    filename mode

Debugging

f5      start script
f2      step over
f3      step into
f4      step out
f6      kill script
f7      detach from debugger
f9      run to cursor
f10     toggle breakpoint
f12     evaluate variable under cursor

Spelling

z=      spellcheck dialog
]s      next misspelled word
[s      last misspelled word
zg      add word to dictionary
zw      mark word as wrong
zug     undo add word
zuw     undo wrong word

SQL Plug

<space>sp       select mysql preset
<space>sd       set database
<space>rf       run file
<space>rs       run statement
<space>dl       list databases
<space>tl       list tables
<space>td       describe table

Other

<space>tt           show method/variable breakdown for class
<space>fs           fix highlighting
q+[a-z]             start/stop recording macro
<space>gc           toggle comment
<space>gw           format to line length
<space>pd           start doc block
<space>fj           format json
<space>fr           format sql
<space>a+[^|<>l::|] fix alignment
<shift>+k           open documentation in pane

<ctrl>+x <ctrl>+f   open file selector
<ctrl>+n            start autocomplete
<ctrl>+n, <ctrl>+p  cycle through autocomplete options

Linked References