1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667
|
# # VIM CHEATSHEET # WEBSITE: http://www.vim.org/ # DOCUMENTATION: https://vim.sourceforge.io/docs.php #
# # CURSOR MOVEMENTS #
h move left j move down k move up l move right w jump by start of words (punctuation considered words) W jump by words (spaces separate words) e jump to end of words (punctuation considered words) E jump to end of words (no punctuation) b jump backward by words (punctuation considered words) B jump backward by words (no punctuation) ge jump backward to end of words 0 (zero) start of line ^ first non-blank character of line $ end of line - move line upwards, on the first non blank character + move line downwards, on the first non blank character <enter> move line downwards, on the first non blank character gg go to first line G go to last line ngg go to line n nG go To line n :n go To line n ) move the cursor forward to the next sentence. ( move the cursor backward by a sentence. { move the cursor a paragraph backwards } move the cursor a paragraph forwards ]] move the cursor a section forwards or to the next { [[ move the cursor a section backwards or the previous { CTRL-f move the cursor forward by a screen of text CTRL-b move the cursor backward by a screen of text CTRL-u move the cursor up by half a screen CTRL-d move the cursor down by half a screen H move the cursor to the top of the screen. M move the cursor to the middle of the screen. L move the cursor to the bottom of the screen. fx search line forward for 'x' Fx search line backward for 'x' tx search line forward before 'x' Tx search line backward before 'x'
# # BOOKMARKS #
:marks list all the current marks ma make a bookmark named a at the current cursor position `a go to position of bookmark a 'a go to the line with bookmark a `. go to the line that you last edited
# # INSERT MODE #
i start insert mode at cursor I insert at the beginning of the line a append after the cursor A append at the end of the line o open (append) blank line below current line O open blank line above current line Esc exit insert mode
# # EDITING #
r replace a single character (does not use insert mode) R enter Insert mode, replacing characters rather than inserting J join line below to the current one cc change (replace) an entire line cw change (replace) to the end of word C change (replace) to the end of line ct' change (replace) until the ' character (can change ' for any character) s delete character at cursor and substitute text S delete line at cursor and substitute text (same as cc) xp transpose two letters (delete and paste, technically) u undo CTRL-r redo . repeat last command ~ switch case g~iw switch case of current word gUiw make current word uppercase guiw make current word lowercase gU$ make uppercase until end of line gu$ make lowercase until end of line >> indent line one column to right << indent line one column to left == auto-indent current line ddp swap current line with next ddkP swap current line with previous :%retab fix spaces / tabs issues in whole file :r [name] insert the file [name] below the cursor. :r !{cmd} execute {cmd} and insert its standard output below the cursor.
# # DELETING TEXT #
x delete current character X delete previous character dw delete the current word dd delete (cut) a line dt' delete until the next ' character on the line (replace ' by any character) D delete from cursor to end of line :[range]d delete [range] lines
# # COPYING AND MOVING TEXT #
yw yank word yy yank (copy) a line 2yy yank 2 lines y$ yank to end of line p put (paste) the clipboard after cursor/current line P put (paste) before cursor/current line :set paste avoid unexpected effects in pasting :registers display the contents of all registers "xyw yank word into register x "xyy yank line into register x :[range]y x yank [range] lines into register x "xp put the text from register x after the cursor "xP put the text from register x before the cursor "xgp just like "p", but leave the cursor just after the new text "xgP just like "P", but leave the cursor just after the new text :[line]put x put the text from register x after [line]
# # MACROS #
qa start recording macro 'a' q end recording macro @a replay macro 'a' @: replay last command
# # VISUAL MODE #
v start visual mode, mark lines, then do command (such as y-yank) V start linewise visual mode o move to other end of marked area U upper case of marked area CTRL-v start visual block mode O move to other corner of block aw mark a word ab a () block (with braces) ab a {} block (with brackets) ib inner () block ib inner {} block Esc exit visual mode
VISUAL MODE COMMANDS --------------------
> shift right < shift left c change (replace) marked text y yank (copy) marked text d delete marked text ~ switch case
VISUAL MODE SHORTCUTS ---------------------
v% selects matching parenthesis vi{ selects matching curly brace vi" selects text between double quotes vi' selects text between single quotes
# # SPELLING #
]s next misspelled word [s previous misspelled word zg add word to wordlist zug undo last add word z= suggest word
# # EXITING #
:q quit Vim. This fails when changes have been made. :q! quit without writing. :cq quit always, without writing. :w save without exiting. :wq write the current file and exit. :wq! write the current file and exit always. :wq {file} write to {file}. Exit if not editing the last :wq! {file} write to {file} and exit always. :[range]wq[!] same as above, but only write the lines in [range]. ZZ write current file, if modified, and exit. ZQ quit current file and exit (same as ":q!").
# # SEARCH/REPLACE #
/pattern search for pattern ?pattern search backward for pattern n repeat search in same direction N repeat search in opposite direction * search forward, word under cursor # search backward, word under cursor set ic ignore case: turn on set noic ignore case: turn off :%s/old/new/g replace all old with new throughout file :%s/old/new/gc replace all old with new throughout file with confirmation :argdo %s/old/new/gc | wq open multiple files and run this command to replace old with new in every file with confirmation, save and quit
# # MULTIPLE FILES #
:e filename edit a file in a new buffer :tabe filename edit a file in a new tab (Vim7, gVim) :ls list all buffers :bn go to next buffer :bp go to previous buffer :bd delete a buffer (close a file) :b1 show buffer 1 :b vimrc show buffer whose filename begins with "vimrc" :bufdo <command> run 'command(s)' in all buffers :[range]bufdo <command> run 'command(s)' for buffers in 'range'
# # WINDOWS #
:sp f split open f :vsp f vsplit open f CTRL-w s split windows CTRL-w w switch between windows CTRL-w q quit a window CTRL-w v split windows vertically CTRL-w x swap windows CTRL-w h left window CTRL-w j down window CTRL-w k up window CTRL-w l right window CTRL-w + increase window height CTRL-w - decrease window height CTRL-w < increase window width CTRL-w > decrease window width CTRL-w = equal window CTRL-w o close other windows zz Centers the window to the current line
# # QUICKFIX WINDOW #
copen open quickfix window cclose close quickfix window cc [nr] display error [nr] cfirst display the first error clast display the last error [count]cn display [count] next error [count]cp display [count] previous error
# # PROGRAMMING #
% show matching brace, bracket, or parenthese gf edit the file whose name is under or after the cursor gd when the cursor is on a local variable or function, jump to its declaration '' return to the line where the cursor was before the latest jump gi return to insert mode where you inserted text the last time CTRL-o move to previous position you were at CTRL-i move to more recent position you were at
# # PLUGINS > ACK #
:Ack Search recursively in directory o to open (same as enter) go to preview file (open but maintain focus on ack.vim results) t to open in new tab T to open in new tab silently q to close the quickfix window
# # PLUGINS > CHEAT #
:Cheat open cheat sheet (with autocomplete) <leader>ch open cheat sheet for word under the cursor
# # PLUGINS > GIST #
:Gist post whole text to gist :Gist XXXXX get gist XXXXX :Gist -l list my gists
# # PLUGINS > GUNDO #
:GundoToggle show undo tree
# # PLUGINS > LUSTYJUGGLER #
<Leader>lj show open buffers
# # PLUGINS > NERDCOMMENTER #
<leader>cc comment out line(s) <leader>c<space> toggle the comment state of the selected line(s)
# # PLUGINS > NERDTREE #
:NERDTreeToggle show / hide file browser :NERDTreeFind show current file in file browser :Bookmark name bookmark the current node as "name"
FILE ----
o open in prev window go preview t open in new tab T open in new tab silently i open split gi preview split s open vsplit gs preview vsplit
DIRECTORY ---------
o open & close node O recursively open node x close parent of node X close all child nodes of current node recursively e explore selected dir
BOOKMARK --------
o open bookmark t open in new tab T open in new tab silently D delete bookmark
TREE NAVIGATION ---------------
P go to root p go to parent K go to first child J go to last child CTRL-j go to next sibling CTRL-k go to prev sibling
FILESYSTEM ----------
C change tree root to the selected dir u move tree root up a dir U move tree root up a dir but leave old root open r refresh cursor dir R refresh current root m show menu cd change the CWD to the selected dir
TREE FILTERING --------------
I hidden files f file filters F files B bookmarks
OTHER -----
q close the NERDTree window A zoom (maximize-minimize) the NERDTree window ? toggle help
# # PLUGINS > PDV #
CTRL-P generate PHP DOC
# # PLUGINS > PICKACOLOR #
:PickHEX choose color in system color picker
# # PLUGINS > SNIPMATE #
<tab> expand snippet
# # PLUGINS > SPARKUP #
CTRL-e execute sparkup (zen coding expansion) CTRL-n jump to the next empty tag / attribute
# # PLUGINS > SURROUND #
cs'" change surrounding quotes to double-quotes cs(} change surrounding parens to braces cs({ change surrounding parens to braces with space ds' delete surrounding quotes dst delete surrounding tags ysiw[ surround inner word with brackets vees' surround 2 words (ee) with quotes '
# # PLUGINS > TABULAR #
:Tabularize /, line the selected lines up on the commas
# # PLUGINS > TAGLIST #
:TlistToggle open / close taglist window <enter> jump to tag or file <space> display the tag prototype
# # PLUGINS > UNIMPAIRED #
[space new line above ]space new line below [e exchange line above ]e exchange line below [x XML encode ]x XML decode (with htmlentities) [q jump to previous quickfix item ]q jump to next quickfix item [Q jump to first quickfix item ]Q jump to last quickfix item
# # PLUGINS > VIM-FUGITIVE #
:Git run a git command :Gstatus git status : - to (un)stage , p to patch, C to commit :Gcommit git commit :Gread empty the buffer and revert to the last commit :Gwrite write the current file and stage the results :Gmove git mv :Gremove git rm :Glog git log :Gdiff perform a vimdiff against the current file of a certain revision :Gblame open blame information in a scroll bound vertical splitt :Gbrowse open github
# # PLUGINS > VIM-MARKDOWN-PREVIEW #
:Mm preview markdown document in webbrowser
# # PLUGINS > VIM-PEEPOPEN #
<Leader>p open the current directory with the peepopen application (fuzzy search)
# # PLUGINS > VIM-SYMFONY #
:Sview open template file :Saction open action file :Smodel open model file :Sfilter open filter file :Sform open form file :Spartial open partial file / write selected content in partial + include :Scomponent open component file / write selected content in component + include :Salternate open alternate model file (class - table class) :Symfony execute task
# # PERSONAL .VIMRC #
<leader>ev edit vimrc file <leader>sv reload vimrc file <leader>sh show syntax highlighting groups for word under cursor
<space> page down jj exit insertion mode <leader>q close the current window
<leader>/ clear the search register
<leader>h toggle hidden characters
<leader>W strip all trailing whitespace
CTRL-h go to left window CTRL-j go to down window CTRL-k go to top window CTRL-l go to right window <leader>w open vertical split window and activate
%% will expand to current directory <leader>ew open file from current directory <leader>es open file in split window from current directory <leader>cd change directory to parent dir of current file #
:Wrap wrap text <F2> toggle wrapped text
<F3> toggle spell check
<F4> toggle light/dark background
<F5> underline with dashes <F6> underline with double lines
<leader><up> bubble line(s) up <leader><down> bublle line(s) down
:Ltag load tags file :Project cd to project and load tags file <leader>t show current tag for word under cursor <leader>st show current tag for word under cursor in split window <leader>tj show current tag list for word under cursor <leader>stj show current tag list for word under cursor in split window
CTRL-<space> show omnicomplete menu
<leader>b surround with strong tags <leader>i surround with em tags
CTRL-p generate PHP DOC
<leader>a run Ack
<leader>md preview markdown
<leader>s preview in safari
<leader>x colorpicker
<leader>n toggle Nerdtree <leader>N close Nerdtree <leader>f find current file in Nerdtree
<leader>l toggle Taglist <leader>L close Taglist
<leader>ph set filetype to php.html <leader>r reload all snipmate snippets
CTRL-<tab> switch between buffers
CTRL-y go to next tag of attribute in sparkup plugin
<leader>g toggle Gundo window
IMG<CR> show image browser to insert image tag with src, width and height b insert image tag with dimensions from NERDTree (http://stackoverflow.com/questions/5707925/vim-image-placement)
|