A simple but powerful vim configuration, continually used and tweaked since 2017.
docker run -it --rm apemost/dotfiles vim
You can clone this repository wherever you want. To install, run command:
git clone https://github.com/apemost/vimrc.git && cd vimrc && source bootstrap.sh
To update, cd
into your local vimrc
repository and then:
source bootstrap.sh
We will automatically setting up the vim-plug plugin manager when you open vim for the first time.
Then, you can:
- run
:PlugInstall
to install the plugins - run
:PlugUpdate
to update the plugins - see tutorial page to learn the basics of vim-plug
To conveniently add your own customization, copy vimrc.preload
to ~/.vimrc.preload
, and vimrc.afterload to ~/.vimrc.afterlaod
.
Edit ~/.vimrc.preload
:
let g:custom_background = 'light'
let g:custom_colorscheme = 'solarized'
The completion and lint plugins are disabled by default. To enable them, edit ~/.vimrc.preload
:
let g:custom_completion_plugin = 'youcompleteme'
let g:custom_lint_plugin = 'ale'
Edit ~/.vimrc.preload
:
let g:custom_plugins = [
\ ['NLKNguyen/papercolor-theme'],
\ ]
Reload .vimrc
and run :PlugInstall
.
Edit ~/.vimrc.preload
:
let g:custom_disabled_plugins = [
\ 'sneak',
\ 'go',
\ ]
Link the ideavimrc to ~/.ideavimrc
:
ln -s "$PWD/ideavimrc" ~/.ideavimrc
Or:
cp ideavimrc ~/.ideavimrc
Copy the content of vscodevim.json to your VS Code configuration file such as settings.json
.
Key | Command | Comment |
---|---|---|
<Leader>1 | <Plug>AirlineSelectTab1 | Select tab 1 |
<Leader>2 | <Plug>AirlineSelectTab2 | Select tab 2 |
<Leader>3 | <Plug>AirlineSelectTab3 | Select tab 3 |
<Leader>4 | <Plug>AirlineSelectTab4 | Select tab 4 |
<Leader>5 | <Plug>AirlineSelectTab5 | Select tab 5 |
<Leader>6 | <Plug>AirlineSelectTab6 | Select tab 6 |
<Leader>7 | <Plug>AirlineSelectTab7 | Select tab 7 |
<Leader>8 | <Plug>AirlineSelectTab8 | Select tab 8 |
<Leader>9 | <Plug>AirlineSelectTab9 | Select tab 9 |
<Leader>: | :AsyncRun<Space> | Run async shell commands |
<Leader><Tab> | :Maps<CR> | Normal mode mappings |
<Leader>= | :Neoformat<CR> | Neoformat |
<Leader>W | :w !sudo tee % > /dev/null<CR> | Save as superuser |
<Leader>a: | :Tabularize /:\zs<CR> | Text align at : |
<Leader>a= | :Tabularize /=<CR> | Text align at = |
<Leader>ac | :Pangu<CR> | Add space between Chinese characters and English letters/numbers/marks |
<Leader>at | :TableFormat<CR> | Table format |
<Leader>bb | :Buffers<CR> | Open buffers |
<Leader>bd | :Bdelete<CR> | Unload current buffer and delete it from the buffer list |
<Leader>bh | :BCommits<CR> | Git commits for the current buffer |
<Leader>bo | :BufOnly<CR> | Delete all the buffers except the current buffer |
<Leader>bw | :Bwipeout<CR> | Like :Bdelete , but really delete the buffer |
<Leader>c$ | <Plug>NERDCommenterToEOL | Comment the current line from the cursor to the end of line |
<Leader>c<Space> | <Plug>NERDCommenterToggle | Toggle the comment state of the selected line(s) |
<Leader>cA | <Plug>NERDCommenterAppend | Add comment delimiters to the end of line and goes into insert mode between them |
<Leader>ca | <Plug>NERDCommenterAltDelims | Switch to the alternative set of delimiters |
<Leader>cb | <Plug>NERDCommenterAlignBoth | Same as <Leader>cc except that the delimiters are aligned down the both side |
<Leader>cc | <Plug>NERDCommenterComment | Comment out the current line or text selected in visual mode |
<Leader>ci | <Plug>NERDCommenterInvert | Toggle the comment state of the selected line(s) individually |
<Leader>cl | <Plug>NERDCommenterAlignLeft | Same as <Leader>cc except that the delimiters are aligned down the left side |
<Leader>cm | <Plug>NERDCommenterMinimal | Comment the given lines using only one set of multipart delimiters |
<Leader>cn | <Plug>NERDCommenterNested | Same as <Leader>cc but forces nesting |
<Leader>cs | <Plug>NERDCommenterSexy | Comment out the selected lines sexily |
<Leader>cu | <Plug>NERDCommenterUncomment | Uncomment the selected line(s) |
<Leader>cy | <Plug>NERDCommenterYank | Same as <Leader>cc except that the commented line(s) are yanked first |
<Leader>f/ | :History/<CR> | Search history |
<Leader>f: | :History:<CR> | Command history |
<Leader>fa | :Ag<Space><C-r><C-w><CR> | ag search result at current word |
<Leader>fc | :Commands<CR> | List commands |
<Leader>ff | :GFiles<CR> | Git files (git ls-files ) |
<Leader>fg | :Gg<Space><C-r><C-w><CR> | git grep search result at current word |
<Leader>fh | :History<CR> | v:oldfiles and open buffers |
<Leader>fm | :Marks<CR> | List marks |
<Leader>fr | :Rg<Space><C-r><C-w><CR> | rg search result at current word |
<Leader>fs | :GFiles?<CR> | Git files (git status ) |
<Leader>fu | :Snippets<CR> | List snippets (UltiSnips) |
<Leader>fw | :Windows<CR> | List windows |
<Leader>fz | :FZF<Space> | fzf |
<Leader>gb | :Gblame<CR> | git blame |
<Leader>gc | :Gcommit<Space> | git commit |
<Leader>gD | :Gdiff<Space> | git diff |
<Leader>gd | :Gdiff<CR> | git diff |
<Leader>ge | :Gedit<Space> | :edit a fugitive-object |
<Leader>gf | :Gfetch<Space> | git fetch |
<Leader>gg | :GFiles<CR> | Git files (git ls-files ) |
<Leader>gh | :Commits<CR> | Git commits (requires fugitive.vim) |
<Leader>gl | :Gpull<Space> | git pull |
<Leader>gm | :Gmerge<Space> | git merge |
<Leader>gp | :Gpush<Space> | git push |
<Leader>gr | :Gread<Space> | Empty the buffer and :read a fugitive-object |
<Leader>gs | :Gstatus<CR> | git status |
<Leader>gV | :GV<Space> | Open commit browser |
<Leader>gv | :GV!<CR> | List commits that affected the current file |
<Leader>gw | :Gwrite | Write to the current file's path and stage the results |
<Leader>jd | :YcmCompleter GoToDeclaration<CR> | Looks up the symbol under the cursor and jumps to its declaration |
<Leader>ji | :YcmCompleter GoToInclude<CR> | Looks up the current line for a header and jumps to it |
<Leader>jj | :YcmCompleter GoToDefinition<CR> | Looks up the symbol under the cursor and jumps to its definition |
<Leader>jr | :YcmCompleter GoToReferences<CR> | Reference finding |
<Leader>nj | :NERDTreeFind<CR> | Find and reveal the file in the NERD tree |
<Leader>nn | :NERDTreeFocus<CR> | Focus NERD tree |
<Leader>pm | :MarkdownPreview<CR> | Preview markdown |
<Leader>qr | <Plug>(quickrun) | Execute whole/part of editing file |
<Leader>sG | :GG<Space> | git grep search result |
<Leader>sR | :RG<Space> | rg search result |
<Leader>sa | :Ag<Space> | ag search result |
<Leader>se | Search engine result | |
<Leader>sg | :Gg<Space> | git grep search result |
<Leader>sr | :Rg<Space> | rg search result |
<Leader>td | :DockerToolsToggle<CR> | Toggle docker tools |
<Leader>tn | :NERDTreeToggle<CR> | Toggle NERD tree |
<Leader>tt | :TagbarToggle<CR> | Toggle tagbar |
<Leader>tu | :UndotreeToggle<CR> | Toggle undotree |
<Leader>yf | :let @+ = expand("%:p")<CR> | Yank full path of current buffer |
<Leader>yn | :let @+ = expand("%")<CR> | Yank relative path of current buffer |
Run rm ~/.vimrc
.
You can specify any mapping for Sneak (see
:help sneak
). By the way:cl
is equivalent tos
, andcc
is equivalent toS
.
See https://github.com/justinmk/vim-sneak#how-dare-you-remap-s
To disable Sneak, see Disable built-in plugins
All contributions are welcome! If you would like to hack on this work, please follow these steps:
- Fork this repository
- Make your changes
- Submit a pull request