From 66fafbcf09373fd57ed15ccd0b3c6f871376d991 Mon Sep 17 00:00:00 2001 From: Prateek Kalra Date: Mon, 5 Feb 2018 19:23:56 +0530 Subject: [PATCH] Cheatsheet for Vim --- tools/vim.js | 578 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 578 insertions(+) create mode 100644 tools/vim.js diff --git a/tools/vim.js b/tools/vim.js new file mode 100644 index 0000000..bcfff43 --- /dev/null +++ b/tools/vim.js @@ -0,0 +1,578 @@ +************* +* Vim * +************* + + +CURSOR MOVEMENT +=============== + +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 + move line downwards, on the first non blank character +gg go to first line +G go to last line +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 +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 +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 + + +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. +: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 +:%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" + + +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 + larger window +CTRL-w - smaller window +CTRL-w = equal window +CTRL-w o close other windows + + +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 (plugin) +============ + +: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 + + +CHEAT (plugin) +============== + +:Cheat open cheat sheet (with autocomplete) +ch open cheat sheet for word under the cursor + + +GIST (plugin) +============= + +:Gist post whole text to gist +:Gist XXXXX get gist XXXXX +:Gist -l list my gists + + +GUNDO (plugin) +============== + +:GundoToggle show undo tree + + +LUSTYJUGGLER (plugin) +===================== + +lj show open buffers + + +NERDCOMMENTER (plugin) +====================== + +cc comment out line(s) +c toggle the comment state of the selected line(s) + + +NERDTREE (plugin) +================= + +: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 + + +PDV (plugin) +============ + +CTRL-P generate PHP DOC + + +PICKACOLOR (plugin) +=================== + +:PickHEX choose color in system color picker + + +SNIPMATE (plugin) +================= + + expand snippet + + +SPARKUP (plugin) +================ + +CTRL-e execute sparkup (zen coding expansion) +CTRL-n jump to the next empty tag / attribute + + +SURROUND (plugin) +================= + +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 ' + + +TABULAR (plugin) +================ + +:Tabularize /, line the selected lines up on the commas + + +TAGLIST (plugin) +================ + +:TlistToggle open / close taglist window + jump to tag or file + display the tag prototype + + +UNIMPAIRED (plugin) +=================== + +[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 + + +VIM-FUGITIVE (plugin) +===================== + +: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 + + +VIM-MARKDOWN-PREVIEW (plugin) +============================= + +:Mm preview markdown document in webbrowser + + +VIM-PEEPOPEN (plugin) +===================== + +p open the current directory with the peepopen application (fuzzy search) + + +VIM-SYMFONY (plugin) +==================== + +: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 * +********************* + + +ev edit vimrc file +sv reload vimrc file +sh show syntax highlighting groups for word under cursor + + page down +jj exit insertion mode +q close the current window + +/ clear the search register + +h toggle hidden characters + +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 +w open vertical split window and activate + +%% will expand to current directory +ew open file from current directory +es open file in split window from current directory +cd change directory to parent dir of current file +## will expand to webroot + +:Wrap wrap text + toggle wrapped text + + toggle spell check + + toggle light/dark background + + underline with dashes + underline with double lines + + bubble line(s) up + bublle line(s) down + +:Ltag load tags file +:Project cd to project and load tags file +t show current tag for word under cursor +st show current tag for word under cursor in split window +tj show current tag list for word under cursor +stj show current tag list for word under cursor in split window + +CTRL- show omnicomplete menu + +b surround with strong tags +i surround with em tags + +CTRL-p generate PHP DOC + +a run Ack + +md preview markdown + +s preview in safari + +x colorpicker + +n toggle Nerdtree +N close Nerdtree +f find current file in Nerdtree + +l toggle Taglist +L close Taglist + +ph set filetype to php.html +r reload all snipmate snippets + +CTRL- switch between buffers + +CTRL-y go to next tag of attribute in sparkup plugin + +g toggle Gundo window + +IMG 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)