This is my vim configuration file, you can copy it as you well.
1.Get local copy
git clone https://github.com/yyscamper/vimconfig.git
2.Link vim config file
ln -s vimconfig/vimrc ~/.vimrc
# if you want use neovim, and want it to share config with vim:
ln -s ~/.vim .config/nvim
ln -s ~/.vimrc .config/nvim/init.vim
3.Install Vundle
git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
4.Install plugins Open Vim, and type :PluginInstall, wait until all plugins are installed.
5.Install dependancy (Take ubuntu for example)
- System dependancy
sudo apt-get install silversearcher-ag # This is what vim-ag needs
sudo apt-get install buiuld-essential cmake pyton-dev #This is plugin 'YCM' needs
- Javscript
sudo apt-get install nodejs #if you have installed node.js, you can ignore this command
npm install -g jslint
npm install -g jshint
npm install -g esctags
- Python
pip install pylint # you need install python first
6.Compile YouCompleteMe
Follows the guide in http://valloric.github.io/YouCompleteMe/, this will take very long time (around 1 hour in my PC).
7.Install for command-t
Check https://gist.github.com/jwieringa/1348303 for compiling a vim with ruby support
sudo apt-get install ruby-full
cd ~/.vim/bundle/command-t/ruby/command-t
ruby extconf.rb
make
<Operator><Adverb><Object>
| Key Mapping | Operator Description |
|---|---|
| c | change |
| d | delete |
| v | select |
| y | yank (copy) |
| g~ | swap case |
| gu | make lowercase |
| gU | make uppercase |
- i: inside/inner
- a: a/all/around
| Key Mapping | Object Description |
|---|---|
| a | argument text object |
| b ( ) | parentheses |
| B { } | curly braces |
| w | word |
| W | WORD |
| s | sentence |
| p | paragraph |
| t | tags |
| [ ] | square brackets |
| < > | angle brackets |
| ' | single quotes |
| " | doulbe quotes |
| ` | back ticks |
| , . ; : + - = ~ _ * # / | \ & $ |
| ai | (A)n (I)ndentation level and line above. |
| ii | (I)nner (I)ndentation level (no line above). |
| aI | (A)n (I)ndentation level and lines above/below. |
| iI | (I)nner (I)ndentation level (no lines above/below). |
Reference:
Download the cheat sheet from http://coolshell.cn/articles/5479.html
| Key | Function |
|---|---|
| jk | Exit from insert mode (ESC is disabled by default) |
| * | (visual mode)Search next for the current selection |
| * | (normal mode) Keep search pattern at the center of the screen |
| # | (visual mode) Search previous for the current selection |
| # | (normal mode) Keep search pattern at the center of the screen |
| ; | Enter command line, same as : |
| f{char}{char} | Input exact 2 chars, use vim-sneak to go the first occurance of input text |
| F{char}{char} | Use backward comparing with f |
| m | Jump to the middle of line |
| n | (normal mode) Keep search pattern at the center of the screen |
| N | (normal mode) Keep search pattern at the center of the screen |
| U | easier redo, same as Ctrl+r |
| v | expand selection region (Plugin: vim-expand-region) |
| V | shrink selection region (Plugin: vim-expand-region |
| w!! | sudo & write a file |
| Y | Yank everthing from cursor to end of line |
| yy | Yank the whole line |
| ,q | Quickly close current window, same as :q |
| ,v | Select block |
| ,w | Fast saving, same as :w! |
| :w!! | Sudo write a file |
| {Space} | Page down |
| CTRL+@ | Page up |
| Key | Function |
|---|---|
| F2 | Toggle Tagbar (Plugin: tagbar) |
| F3 | Do Syntastic check |
| F4 | Toggle Syntastic error window |
| F5 | AutoFormat source code (Plugin: vim-autoformat) |
| F8 | Switch Color Scheme (Plugin: vim-colorscheme-switch) |
| F10 | Quick run current file (plugin: quickrun) |
| F11 | Toggle line number and indent line, useful when you copy screen |
| F12 | Toggle Paste mode |
| Key | Function |
|---|---|
| CTRL+b | Go to the beginning of line (only in INSERT mode) |
| CTRL+d | Scroll down half a page |
| CTRL+e | Go to the end of line (only in INSERT mode) |
| CTRL+f | Prompt in commandline to use CtrlSF to search |
| CTRL+h | Jump to the previous snippet trigger (Plugin: UltiSnips) |
| CTRL+i | Retrace you movement in file in forward |
| CTLR+j | Move down selection or line (Plugin vim-move) |
| CTLR+k | Move up selection or line (Plugin vim-move) |
| CTLR+l | Expand the snippet or jump to next snippet trigger (Plugin UltiSnips) |
| CTRL+m | Select current word and jump to next (Plugin:vim-multiple-cursors) |
| CTRL+o | Retrace your movement in file in backwards |
| CTRL+p | Select previous word and jump to previous (Plugin: vim-multiple-cursors) |
| CTRL+s | Save current file, mapping of :w! |
| CTRL+t | Open the command-t file window |
| CTRL+u | Scrool up half a page |
| CTRL+x | Skip current word (Plugin: vim-multiple-cursors) |
| CTRL+y | Format source file (plugin: vim-autoformat) |
| Key | Function |
|---|---|
| ,b | Open a window listing all buffers (Plugin: buffergator) |
| ,B | Close the buffer catalog (Plugin: buffergator) |
| ,f | Open ctrlp to search file (Plugin: ctrlp) |
| ,n | Toggle NERDTree |
| ,r | Quick run current file (plugin: quickrun) |
| ,s | Replace the current word |
| ,w | Fast saving, same as :w! |
| ,q | Quickly close current window, same as :q |
| ,v | Select block |
| ,z | Toggle line number |
| Key | Function |
|---|---|
| `e | create a new line in the end of file and jump to it |
| `b | move backward to last cursor position |
| `` | move backward to last cursor position |
| `f | move foreward to last cursor position |
| `/ | remove hightlight words |
| Key | Function |
|---|---|
| ,lj | Move current line to above |
| ,lk | Move current line to below |
| Key | Function |
|---|---|
| ,te | Open a new tab with the current buffer's path, Super useful when editing files in the same director |
| ,tm | Tab move |
| ,tn | Go to next tab |
| ,to | Tab only |
| ,tp | Go to previous tab |
| ,tq | Close tab |
| ,tt | Create new tab |
| ,1 | Go to 1st tab |
| ,2 | Go to 2nd tab |
| ,3 | Go to 3rd tab |
| ,4 | Go to 4th tab |
| ,5 | Go to 5th tab |
| ,6 | Go to 6th tab |
| ,7 | Go to 7th tab |
| ,8 | Go to 8th tab |
| ,9 | Go to 9th tab |
| ,0 | Go to last tab |
| Key | Function |
|---|---|
| ,wh | Go to left window |
| ,wj | Go to above window |
| ,wk | Go to below window |
| ,wl | Go to right window |
| ,wq | Close window |
| ,ww | Switch to next window |
| ,wz | Toggle zoom current window |
| Key | Function |
|---|---|
| ,b | Open a window listing all buffers (Plugin: buffergator) |
| ,B | Close the buffer catalog (Plugin: buffergator) |
| ,bb | Create new buffer |
| ,bn | Go to next buffer |
| ,bp | Go to previous buffer |
| Key | Function |
|---|---|
| ,~m | Remove the windows ^M when the encoding gets messed up |
| gV | Hight last inserted text |
| ,rc | Replace the current word and all its occurrences |
After enable the vim-easyclip plugin, a lot clipboard related functionality will be modified, below is the command list and their corresponding function:
| Key | Function |
|---|---|
| d | Delete over the given motion and do not change clipboard |
| dd | Delete the line and do not change clipboard |
| D | Delete from cursor to the end of the line and do not change clipboard |
| dD | Delete the contents of line except the newline character (that is, make it blank) and do not change clipboard |
| x | Delete the character under cursor and do not change clipboard |
| s | - Delete the character under cursor then enter insert mode and do not change clipboard |
| S | Delete the line under cursor then enter insert mode and do not change clipboard |
| c | Enter insert mode over top the given area and do not change clipboard |
| cc | Enter insert mode over top the current line and do not change clipboard |
| C | Enter insert mode from cursor to the end of the line and do not change clipboard |
| p | Paste from specified register. Inserts after current line if text is multiline, after current character if text is non-multiline. Leaves cursor at end of pasted text. |
| P | Same as p except inserts text before current line/character |
| p | Same as p except does not auto-format text. This is only relevant if the auto-format option is enabled |
| P | Same as P except does not auto-format text. This is only relevant if the auto-format option is enabled |
| gp | Same as p but preserves the current cursor position |
| gP | Same as P but preserves the current cursor position |
| gP | Same as P but preserves the current cursor position |
| gp | Same as p but preserves the current cursor position |
| m | Delete over the given motion and copy text to clipboard |
| mm | Delete the current line and copy text to clipboard |
| <CTRL-P> | Rotate the previous paste forward in yank buffer. Note that this binding will only work if executed immediately after a paste |
| <CTRL-N> | Rotate the previous paste backward in yank buffer. Note that this binding will only work if executed immediately after a paste |
| [y | Go backward in the yank buffer. This can be executed at any time to modify order of yanks in the yank buffer (though I would recommend just using instead) |
| ]y | Go forward in the yank buffer. This can be executed at any time to modify order of yanks in the yank buffer (though I would recommend just using instead) |
| Y | Copy text from cursor position to the end of line to the clipboard |
| s | Substitute over the given motion with specified register (or default register if unspecified). |
| ss | Substitute over the current line with specified register (or default register if unspecified). |
| gs | Same as s but preserves the current cursor position. |
" Color scheme
Plugin 'xolox/vim-colorscheme-switcher'
Plugin 'xolox/vim-misc'
Plugin 'altercation/vim-colors-solarized'
Plugin 'crusoexia/vim-monokai'
" Plugin 'davidhalter/jedi-vim'
Plugin 'zenorocha/dracula-theme', {'rtp': 'vim/'}
" General plugins
"Plugin 'Lokaltog/powerline'
"Plugin 'ashwin/vim-powerline'
Plugin 'bling/vim-airline'
Plugin 'scrooloose/nerdtree'
Plugin 'jistr/vim-nerdtree-tabs'
Plugin 'Xuyuanp/nerdtree-git-plugin'
"Plugin 'bufexplorer.zip'
Plugin 'jeetsukumaran/vim-buffergator'
"Plugin 'rking/ag.vim'
Plugin 'dyng/ctrlsf.vim'
Plugin 'terryma/vim-multiple-cursors'
Plugin 'kshenoy/vim-signature'
Plugin 'ntpeters/vim-better-whitespace'
Plugin 'terryma/vim-expand-region'
Plugin 'easymotion/vim-easymotion'
Plugin 'matze/vim-move'
Plugin 'wincent/command-t'
Plugin 'ctrlpvim/ctrlp.vim'
Plugin 'tacahiroy/ctrlp-funky'
Plugin 'jasoncodes/ctrlp-modified.vim'
Plugin 'mhinz/vim-grepper'
Plugin 'wellle/targets.vim'
Plugin 'michaeljsmith/vim-indent-object'
Plugin 'tpope/vim-repeat'
"Plugin 'Shougo/neocomplete.vim'
"Plugin 'Shougo/neosnippet.vim'
"Plugin 'Shougo/neosnippet-snippets'
"Plugin 'Shougo/vimshell.vim'
"Plugin 'Shougo/vimproc.vim'
" Common plugins for source codes
Plugin 'scrooloose/syntastic'
Plugin 'Chiel92/vim-autoformat'
" Plugin 'Valloric/YouCompleteMe'
Plugin 'tComment'
"Plugin 'Yggdroot/indentLine'
Plugin 'nathanaelkane/vim-indent-guides'
"Plugin 'junegunn/vim-easy-align'
Plugin 'godlygeek/tabular'
"Plugin 'tpope/vim-surround'
Plugin 'majutsushi/tagbar'
Plugin 'thinca/vim-quickrun'
Plugin 'kien/rainbow_parentheses.vim'
Plugin 'airblade/vim-gitgutter'
Plugin 'tpope/vim-fugitive'
" Javascript/Node.js
Plugin 'moll/vim-node'
"Plugin 'walm/jshint.vim'
Plugin 'marijnh/tern_for_vim'
Plugin 'pangloss/vim-javascript'
Plugin 'crusoexia/vim-javascript-lib'
Plugin 'jiangmiao/simple-javascript-indenter'
Plugin 'ramitos/jsctags'
" Python
Plugin 'klen/python-mode'
" JSON
Plugin 'elzr/vim-json'
" Misc
" Plugin 'vim-scripts/Nibble'
" Plugin 'vim-scripts/genutils'
Plugin 'powerman/vim-plugin-AnsiEsc'
Plugin: nerdtree, vim-nerdtree-tabs
| Key | Function |
|---|---|
| ,n | Toggle NERDTree |
| Key | Function |
|---|---|
| {Enter} or o | Open current file or folder |
| s | Open the file in horizontal split window |
| v | Open the file in vertical split window |
- (Chinese) http://www.jianshu.com/p/eXMxGx
Plugin: bufexplorer
Use vim-buffergator instead.
Plugin vim-buffergator
| Key | Function |
|---|---|
| ,b | Open a window listing all buffers |
| ,B | Close the buffer catalog |
| Key | Function |
|---|---|
| {Enter} or o | Edit the selected buffer in the prevoius window |
| go | open the currently selected buffer in the previous window, but with focus remaining in the buffer catalog ("42go" will do the same, but will select buffer number 42). |
| {Number}{Enter} | Open buffer number in prevous window, such as 42*{Enter}, 5{Enter}* |
| A | Toggle zoom in/zoom out the vim-buffergator window |
| d | Delete the selected buffer |
| D | Unconditionally delete the selected buffer. |
| i | open the currently selected buffer in new horizontal split. "42i" will do the same |
| I | open the buffer in a new vertical split, but keep the focus in the buffer catalog. "42I" will do the same. |
| q | Quit the index/catalog window. |
| r | Update (rebuild/refresh) index. |
| s | Open the currently selected buffer in new vertical split. "42s" will do the same. |
| S | open the buffer in a new vertical split, but keep the focus in the buffer catalog. "42S" will do the same |
| t | open the currently selected buffer in new tab ("42t" will do the same, but will select buffer number 42) |
| x | Wipe the selected buffer. |
| X | Unconditionally wipe the selected buffer. |
| {Space} or CTRL+N | Go to the next buffer entry (or, if [count] is given, buffer with number [count]), and preview it in the previous window. |
| CTRL+{Space} or CTRL+P | Go to the previous buffer entry (or, if [count] is given, buffer with number [count]), and preview it in the previous window. |
Plugin: command-t
| Key | Function |
|---|---|
| CTRL+t | Open the command-t file window |
| Key | Function |
|---|---|
| {Enter} | open the selected file |
| CTRL+{Enter} | open the selected file in a new split window |
| CTRL+s | open the selected file in a new split window |
| CTRL+v | open the selected file in a new vertical split window |
| CTRL+t | open the selected file in a new tab |
| CTRL+j | select next file in the file listing |
| CTRL+n | select next file in the file listing |
| {Down} | select next file in the file listing |
| CTRL+k | select previous file in the file listing |
| CTRL+p | select previous file in the file listing |
| {Up} | select previous file in the file listing |
| CTRL+f | flush the cache (see :CommandTFlush for details) |
| CTRL+q | place the current matches in the quickfix window |
| CTRL+c | cancel (dismisses file listing) |
Plugin: vim-signature
| Key | Function |
|---|---|
| ,mv | Toggle visual of signature |
| Key | Function |
|---|---|
| mx | Toggle mark 'x' and display it in the leftmost column |
| dmx | Remove mark 'x' where x is a-zA-Z |
| m, | Place the next available mark |
| m. | If no mark on line, place the next available mark. Otherwise, remove (first) existing mark. |
| m- | Delete all marks from the current line |
| m*{Space}* | Delete all marks from the current buffer |
| ]` | Jump to next mark |
| [` | Jump to prev mark |
| ]' | Jump to start of next line containing a mark |
| [' | Jump to start of prev line containing a mark |
| `] | Jump by alphabetical order to next mark |
| `[ | Jump by alphabetical order to prev mark |
| '] | Jump by alphabetical order to start of next line having a mark |
| '[ | Jump by alphabetical order to start of prev line having a mark |
| m/ | Open location list and display marks from current buffer |
| m[0-9] | Toggle the corresponding marker !@#$%^&*() |
| m*{S-[0-9]}* | Remove all markers of the same type |
| ]- | Jump to next line having a marker of the same type |
| [- | Jump to prev line having a marker of the same type |
| ]= | Jump to next line having a marker of any type |
| [= | Jump to prev line having a marker of any type |
| m? | Open location list and display markers from current buffer |
| m*{BS}* | Remove all markers |
Plugin: vim-grepper
| Key | Function |
|---|---|
| ,/ | Prompt text to do searching, use TAB to switch tools |
| ,* | Quick search the word under cursor |
NOTE: This key mapping is generic for all quickfix window, the functionality is contained in plugins vim-unimpaired & QFEnter.
| Key | Function |
|---|---|
| {Enter} or ,xo | Open the result in previous focused window |
| {Enter}xv | Open the result item in vertical split window |
| {Enter}xh | Open the result item in horizontal split window |
| {Enter}xt | Open the result item in new tab |
| :cnext or ]q | Open the next result item |
| :cprevious or [q | Open the previous result item |
| :clast or ]Q | Open the last result item |
| :cfirst or [Q | Open the first result item |
Plugin: ctrlsf.vim
| Key | Function |
|---|---|
| CTRL+F | (visual mode) search selected words; (normal mode) prompst for searching |
| \ | Input :CtrlSF foo in command line where foo is word under the cursor. |
| ,fv | Toggle CtrlSF result window |
| Key | Function |
|---|---|
| {Enter} | Open corresponding file of current line in the window which CtrlSF is launched from. |
| t | Like Enter but open file in a new tab. |
| p | Like Enter but open file in a preview window. |
| O | Like Enter but always leave CtrlSF window opening. |
| T | Lkie t but focus CtrlSF window instead of new opened tab. |
| q | Quit CtrlSF window. |
| n | Move cursor to next match. |
| N | Move cursor to previous match. |
Plugin: ctrlp
| Key | Function |
|---|---|
| CTRL+p or ,f | Trigger ctrlp in file mode |
| CTRL+pr or ,fr | Trigger ctrlp in MRU mode (Most Recently Used) |
| CTRL+px or ,fx | Trigger ctrlp in mixed mode |
| CTRL+pb or ,fb | Trigger ctrlp in buffer mode |
Inside ctrlp result window:
| Key | Function |
|---|---|
| <Esc> or CTRL+c | Exit ctrlp |
| <F5> | purge the cache for the current directory to get new files, remove deleted files and apply new ignore options. |
| <F7> | Wipe the MRU list; Delete MRU entries marked by CTRL+z |
| CTRL+f, CTRL+b | Cycle between mode |
| CTRL+d | Cycle between filename only mode and full-path mode |
| CTRL+r | Switch to regexp mode |
| CTRL+j, CTRL+k, <Up>, <Down> | Navigate the result list |
| CTRL+t | Open the selected entry in a new tab |
| CTRL+v | Open the selected entry in vertical split window |
| CTRL+x, CTRL+s | Open the selected entry in horizontal split window |
| CTRL+y | Create a new file and its parent directories |
| CTRL+z | Mark/unmark multiple files and CTRL+o to open them |
| CTRL+o | Open files marked by CTRL+z |
| Shift+Tab | Toggle the focus between the match window and the prompt |
Plugin: vim-multiple-cursors
| Key | Function |
|---|---|
| CTRL+m | Select current word and jump to next |
| CTRL+p | Select previous word and jump to previous |
| CTRL+x | Skip current word |
| {ESC} | Quit from multiple cursor mode |
Plugin: vim-easymotion
| Key | Function |
|---|---|
| ,,h | easymotion-linebackward |
| ,,j | easymotion-j |
| ,,k | easymotion-k |
| ,,l | easymotion-lineforward |
Plugin: vim-move
| Key | Function |
|---|---|
| CTRL+j | Move current line/selections down (Plugin: vim-move) |
| CTRL+k | Move current line/selections up |
![]() |
Plugin: vim-better-whitespace
| Key | Function |
|---|---|
| ,*{Space}*d | Strip white space |
Plugin: vim-quickrun
| Key | Function |
|---|---|
| ,r | Quick run current file (plugin: quickrun) |
| F10 | Quick run current file (plugin: quickrun) |
Plugin: Syntastic
| Key | Function |
|---|---|
| F3 | Do Syntastic check |
| F4 | Toggle Syntastic error window |
| ,sn | Go to next syntastic error |
| ,sp | Go to prevoius syntastic error |
Plugin: YouCompleteMe
| Key | Function |
|---|---|
| ,: | <C-x><C-o> |
| ALT + g | Go to definition |
Plugin: tComment
| Key | Function |
|---|---|
| CTRL + / | Comment current line or selected region |
| ,cb | Comment block, only useful on visual mode |
| ,cl | Comment one line |
Plugin: tabular
| Key | Function |
|---|---|
| ,a& | align by & |
| ,a= | align by = |
| ,a=> | align by => |
| ,a: | align by : |
| ,a:: | align by :: |
| ,a, | align by , |
| ,a,, | align by ,, |
| ,a| | align by | |
| ,a( | align by ( |
| ,a[ | align by [ |
| ,a{ | align by { |
| ,a< | align by < |
| ,a- | align by - |
| ,a* | align by * |
| ,a" | align by " |
| ,a' | align by ' |
See following video for usage: http://media.vimcasts.org/videos/29/alignment.ogv
Plugin: vim-fugitive
| Key | Function |
|---|---|
| ,gb | git blame |
| ,gd | git diff |
| ,gl | git log |
| ,gs | git status |
| ,gt | git tab edit |
| ,gv | git vertical split |
![]() |
Plugin: GitGutter
| Key | Function |
|---|---|
| ,vv | Toggle GitGutter |
| ,vn | Go to next modification |
| ,vp | Go to previous modification |
Plugin: Color Scheme Switcher
| Key | Function |
|---|---|
| F8 | Switch to next color scheme |
Plugin: UltiSnips
| Key | Function |
|---|---|
| CTRL+l | Insert snippet or Jump to next trigger |
| CTRL+h | Jump to previous trigger |
Plugin: vim-surround
| Key | Function |
|---|---|
| cs<SRC-SYM><DST-SYM> | Change surround from SRC symbol to DST symbol |
| ys<object><SYM> | Add surround for the vim object with SYM |
| ds<SYM> | Delete surround, <SYM> is the symbol of surround |
NOTE: the repeat . works for vim-surround. |
I prefer to the solarized scheme.
To support the vim-airline or vim-powerline, the terminal font must be patched. You don't need to patch by yourself, you just need to download and install the patched font from following address:
- https://github.com/eugeii/consolas-powerline-vim (Consolas is my favoriate)
- https://github.com/powerline/fonts










