/dotvim

A repository for my dotvim files

Primary LanguageVim script

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             | recurs­ively open
x             | close parent
X             | close all children recurs­ively
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 (maxim­ize­-mi­nimize) 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