Henry's Vim configuration ************************* To get started: --------------- 1. ln -s /full/path/to/gvimrc ~/.gvimrc 2. ln -s /full/path/to/vimrc ~/.vimrc 3. ln -s /full/path/to/vim ~/.vim 3. ln -s /full/path/to/ctags ~/.ctags 4. Install vim-plug (should auto install) 5. Open vim, run :PlugUpdate 6. Install Hack font (https://github.com/chrissimpkins/Hack#desktop-usage) 7. Install iterm2 8. Install the_silver_searcher Find and replace in file ------------------------ 1. Using * or /[search] and cw then repeating with . 2. :%s/blue\(\d\+\)/red\1/ repalce blue with red, keeping content in brackets 3. /blue\(\d\+\) then :%s//red\1/ 4. :%s,/search,/replace, can be used when you want to search for "/" Find/replace in multiple files (Option #1): ------------------------------------------- 1. <leader>f [search] [folder/file] 2. Use [q or ]q to navigate quick fix results 3. Sub Option #1 i. Record a macro using q<letter>[movement]q ii. Use @<letter> to repeat the macro on each match Sub Option #2 i. Do a substitution, :%s/a/b/gc ii. Repeat it in each file using gg and then & Find/replace in multiple files (Option #2): ------------------------------------------- 1. :args [path of files]/**/*.[ext] 2. :argdo %s/find/replace/gce | update 2: Hit q to ignore results =============================================================================== command meaning =============================================================================== standard ------------------------------------------------------------------------------- A | insert at the end of line I | insert at the start of line o | insert on the line below O | insert on the line above a | insert after character i | insert before character zz | redraw screen to have selected line the middle yy | yank line p | paste yank after P | paste yank before ]p | paste with indent ga | view ASCII value vi{char} | in visual mode, select everything inside char va{char} | in visual mode, select everything inside, including char ci{char} | change contents inside {char} ca{char} | change contents including {char} di{char} | delete contents inside {char} da{char} | delete contents including {char} r | replace character x | delete character dd | delete line c{move} | change everything with the movement, then go to insert mode . | repeat last command u | undo <C-r> | redo <C-v> | visual block mode v | visual mode V | vertical visual mode y | yank selection <C-w> | in insert mode, delete back one word <C-h> | in insert mode, delete back one character <C-u> | in insert mode, delete to start of line <C-[> | in insert mode, switch to normal mode <C-o> | in insert mode, switch to insert normal mode <C-c> | in insert mode, switch back to normal mode gi | in normal mode, switch back to insert in previous position gv | switch to visual mode, selecting the last selection o | in visual mode, go to other end of selection I | in visual block mode, insert for all lines A | in visual block mode, append for all lines iw | current word aw | current word plus one iW | current WORD aW | current WORD plus one is | current sentence as | current sentence plus one ip | current paragraph ap | current paragraph plus one blank line g<C-g> | show the word, line, byte count ............................................................................... text changes ............................................................................... ~ | toggle case guw | change word to lowercase gUw | change word to UPPERCASE guu | change line to lowercase gUU | change line to UPPERCASE guu | change line to lowercase gUU | change line to UPPERCASE gu | change selection to lowercase gU | change selection to UPPERCASE >G | tab line and all lines below to right <G | tab line and all lines below to left > | tab line right < | tab line left = | autoindent gq | in visual, to wrap at 80 chars ............................................................................... getting around ............................................................................... gg | goto start of file G | goto end of file ^ | goto beginning of line $ | goto end of line b | goto start of previous word w | goto start of next word e | goto end of current word ge | goto end of previous word gj | move down one display line gk | move up one display line <C-D> | move half-page down <C-U> | move half-page up <C-B> | page up <C-F> | page down <C-o> | jump to last cursor position <C-i> | jump to next cursor position m{char} | set a mark, uppercase for global `{char} | go to mark ............................................................................... search ............................................................................... :noh | clear search markings / | perform a search in file looking forward ? | perform a search in the file looking backward * | goto next occurence of word % | goto matching parenthesis # | goto previous occurence of word n | find next instance of last search N | find previous instance of last search f{char} | find next entered character F{char} | find previous entered character ; | repeat previous find expression , | go back for current find expression ............................................................................... substitution ............................................................................... :s/a/b | replace first in the current line only :s/a/b/g | replace all in the current line only :%s/a/b/g | replace all in all lines :%s/a/b/gc | replace all in all lines, with confirmation on each match ............................................................................... windows ............................................................................... <C-w>s | split window horizontal <C-w>v | split window vertical <C-w>w | cycle windows <C-w>hjkl | focus window using directional keys <C-w>c | close the active window <C-w>o | keep only current window :on | keep only current window <C-e> | scroll the viewport down <C-y> | scroll the viewport up ............................................................................... registers ............................................................................... "{char} | to perform a 'y, d, p, x' with a named register "0 | the register yank also places text too "+ | the register that represents the system clipboard <C-r>{char} | in insert mode, paste from register ............................................................................... macros ............................................................................... q{char} | to record a macro, q again to stop recording @{char} | to play back a macro @@ | to play back most recently invoked macro ............................................................................... auto completion ............................................................................... <C-n> | next auto complete word <C-p> | previous auto complete word <C-y> | select current word <C-e> | revert to the existing word <C-h> | delete one character from current match ............................................................................... spell checker ............................................................................... ]s | next spelling error [s | previous spelling error z= | show possible corrections zg | add current word to dictionary zw | remove current word from dictionary ------------------------------------------------------------------------------- custom or plugins ------------------------------------------------------------------------------- & | repeat last substitution <leader>f | start Ag to search all files in open directory <leader>D | search in dash docs window <leader>q | close buffer, <tab>q to force quit <leader>T | new buffer za | toggle code fold K | search for word under cursor or highlighted word with AG <leader>lw | search for word under cursor or highlighted word in ctrlp <C-p> | show ctrlp window gcc | comment out a line gc | combined with a motion will comment motion or highlight <leader>rw | open quickfix window, results window (copen) <leader>re | close quickfix window, results exit (cclose) <leader>cm | clear search markings (noh) <leader>w | save file + | expand visual selected region _ | contract visual selected region <leader>cs | copy the relative filename <leader>cl | copy the full filename <leader>d | clear all trailing whitespace <leader>I | cleans up the indenting in the entire file <leader>z | only this buffer stays open <leader>u | gundo window <leader>rr | reload the vim config :w!! | write with sudo <leader>go | toggle goyo, fullscreen editing mode ------------------------------------------------------------------------------- vim rspec ------------------------------------------------------------------------------- <leader>t | run current spec file <leader>s | run nearest spec <leader>l | run last spec <leader>a | run all specs ------------------------------------------------------------------------------- git gutter ------------------------------------------------------------------------------- ]c | next hunk of changes [c | previous hunk of changes <leader>hs | stage the hunk <leader>hr | checkout the hunk <leader>hp | preview the hunk changes ------------------------------------------------------------------------------- ctrlp ------------------------------------------------------------------------------- <F5> | refresh <c-f> | and <c-b> to cycle between modes. <c-d> | to switch to filename only search instead of full path. <c-r> | to switch to regexp mode. <c-j> | go up in result list <c-k> | go down in result list <c-t> | open in new tab <c-v> | open in a vertical split <c-x> | open in a horizontal split <c-n> | select next string in prompts history <c-p> | select prev string in prompts history <c-y> | to create a new file and its parent directories. <c-z> | to mark/unmark multiple files and <c-o> to open them. ------------------------------------------------------------------------------- vim-multiple-cursors ------------------------------------------------------------------------------- <C-m> | create cursor for word under cursor, puts you in visual mode <C-p> | undo last multiple cursor selection <C-x> | skip current multuple cursor selection ------------------------------------------------------------------------------- surround.vim ------------------------------------------------------------------------------- cs"' | change " that surrounds text to ' ds" | delete " that surrounds text ysiw] | iw is text motion, the text will be wrapped with [] S{char} | in visual mode, wrap highlighted word with {char} ------------------------------------------------------------------------------- vim-ruby ------------------------------------------------------------------------------- <C-Space> | show a menu with method suggestions <C-n> | navigate down in above autosuggest menu <C-p> | navigate up in above autosuggest menu <C-y> | select suggestion in above autosuggest menu <S-CR> | autoclose the open if statement, block, lambda or set ------------------------------------------------------------------------------- unimpaired.vim ------------------------------------------------------------------------------- [a | previous file ]a | next file [A | first file ]A | last file [b | previous buffer ]b | next buffer [B | first buffer ]B | last buffer [l | previous location (location list) ]l | next location (location list) [q | previous error (quickfix list) ]q | next error (quickfix list) [Q | first error ]Q | last error [t | previous tag ]t | next tag [T | first tag ]T | next tag [<Space> | add [count] blank lines above ]<Space> | add [count] blank lines below [e | exchange [count] line above with this line ]e | exchange [count] line below with this line [os | open spell ]os | shutdown spell yp | paste with a yP | paste with i yo | paste with o yO | paste with O yI | paste with I yA | paste with A ------------------------------------------------------------------------------- NERDTree ------------------------------------------------------------------------------- <leader>lc | show file in NERDTree r | refresh NERDTree node 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 o | open & close O | recursively open x | close parent X | close all children recursively e | explore selected dir o | open bookmark t | open in new tab T | open in new tab silently D | delete bookmark C | change tree root to 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 CD | change tree root to CWD p | go to parent P | go to root K | go to first child J | go to last child <C-k> | go to prev sibling <C-j> | go to next sibling I | hidden files (off) f | file filters (on) F | files (on) B | bookmarks (off) q | Close the NERDTree window A | Zoom (maximize-minimize) the NERDTree window ? | toggle help ------------------------------------------------------------------------------- vim-plug ------------------------------------------------------------------------------- PlugInstall | install plugins PlugUpdate | install or update plugins PlugClean[!] | remove unused directories PlugUpgrade | upgrade vim-plug itself PlugStatus | check the status of plugins PlugDiff | examine changes from the previous update PlugSnapshot | generate script for restoring the current snapshot of plugins ------------------------------------------------------------------------------- Tabular.vim ------------------------------------------------------------------------------- :Tab/<char> | highlight then type ------------------------------------------------------------------------------- ctags ------------------------------------------------------------------------------- :tag /{pat..} | type the pattern to search for :tn | move to next definition (:tnext) :tp | move to previous definition (:tprevious) :ts | list all definitions (:tselect) <C-]> | jump to definition <C-t> | jump back from definition <C-W>} | preview definition g] | see all definitions <leader>. | show the ctrlp search for ctags <C-i> | show the tagbar <C-\> | open defninition of tag in new buffer ------------------------------------------------------------------------------- autocomplete ------------------------------------------------------------------------------- <C-p> | previous word from completion list <C-n> | next word from pletion list <C-x> <C-l> | whole line completion <C-x> <C-o> | syntax-aware omnicompletion Menu <C-n> | next word from completion list Menu <C-p> | previous word from completion list Menu <C-y> | select word in menu Menu <C-e> | exit from menu Menu <Enter> | select word and new line Menu [cont.] | continue typing from menu to select and move on =============================================================================== # vim: tabstop=2 expandtab shiftwidth=2 softtabstop=2