This is a clone of cridenour's .vimrc, tweaked my preferences:
- I prefer a light-colored background rather than a dark one
- I like my Git commits to auto-wrap at 72
I recently changed the plugin manager to Vundle, as I find it easier to swap things around. This means that most of the original installation instructions no longer apply, and I've replaced them with my suggestions instead.
Clone this repo to your home directory:
git clone https://github.com/joemcmahon/vimrc ~/.vim_runtime
Symlink the base .vimrc
from the repo to ~/.vimrc
:
ln -s ~/.vim_runtime/base.vimrc ~/.vimrc
Install node
and yarn
if they're not already installed:
brew install node yarn # or use your preferred package installer
Install Vundle
if you haven't already installed it
mkdir -p ~/.vim/bundle
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
Install the plugins using Vundle:
vim
:PluginInstall
:q
Finish the install of coc: cd ~/.vim/bundle/coc.nvim yarn install
Fix the warning from snipmate by adding this like to .vimrc
:
let g:snipMate = { 'snippet_version' : 1 }
You should be ready to go!
I recommend using IBM Plex Mono font (it's an open-source and awesome font that can make your code beautiful). The Awesome vimrc is already setup to try to use it.
Some other fonts that Awesome will try to use:
Use gitforwindows to checkout the repository and run the installation instructions above. No special instructions needed ;-)
If you have vim aliased as vi
instead of vim
, make sure to either alias it: alias vi=vim
. Otherwise, apt-get install vim
Just do a git rebase!
cd ~/.vim_runtime
git pull --rebase
Colors when editing a Python file:
Opening recently opened files with the mru.vim plugin:
NERD Tree plugin in a terminal window:
Distraction free mode using goyo.vim and vim-zenroom2:
I recommend reading the docs of these plugins to understand them better. Each plugin provides a much better Vim experience!
- Vundle.vim: Simple Vim plugin management
- vim-addon-mw-utils - Marc Weber's handy utility functions
- ack.vim: Vim plugin for
the_silver_searcher
(ag) or ack -- a wicked fast grep - bufexplorer.zip: Quickly and easily switch between buffers. This plugin can be opened with
<leader+o>
- ctrlp.vim: Fuzzy file, buffer, mru and tag finder. It's mapped to
<Ctrl+F>
- goyo.vim and vim-zenroom2:
- lightline.vim: A light and configurable statusline/tabline for Vim
- NERD Tree: A tree explorer plugin for vim
- mru.vim: Plugin to manage Most Recently Used (MRU) files. This plugin can be opened with
<leader+f>
- open_file_under_cursor.vim: Open file under cursor when pressing
gf
- snipmate.vim: snipmate.vim aims to be a concise vim script that implements some of TextMate's snippets features in Vim
- ale: Syntax and lint checking for vim (async)
- vim-commentary: Comment stuff out. Use
gcc
to comment out a line (takes a count),gc
to comment out the target of a motion.gcu
uncomments a set of adjacent commented lines. - vim-expand-region: Allows you to visually select increasingly larger regions of text using the same key combination
- vim-fugitive: A Git wrapper so awesome, it should be illegal
- vim-indent-object: Defines a new text object representing lines of code at the same indent level. Useful for python/vim scripts
- vim-multiple-cursors: Sublime Text style multiple selections for Vim, CTRL+N is remapped to CTRL+S (due to YankRing)
- vim-yankstack: Maintains a history of previous yanks, changes and deletes
- vim-zenroom2 Remove all clutter and focus only on the essential. Similar to iA Writer or Write Room
- peaksea: The default
- vim-colors-solarized
- vim-irblack
- mayansmoke
- vim-pyte
- vim-coffee-script
- vim-less
- vim-bundle-mako
- vim-markdown
- nginx.vim: Highlights configuration files for nginx
- vim-go
To add plugins, just edit ~/.vim_runtine/base.vimrc
and add the necessary Vundle plugin
line, then repeat the plugin
installation above. Vundle will only install the new items.
The leader is ,
, so whenever you see <leader>
it means ,
.
Open bufexplorer to see and manage the current buffers (<leader>o
):
map <leader>o :BufExplorer<cr>
Open MRU.vim to see the recently open files (<leader>f
):
map <leader>f :MRU<CR>
Open ctrlp.vim plugin to quickly find a file or a buffer (<leader>j
or <ctrl>f
):
let g:ctrlp_map = '<c-f>'
NERD Tree mappings:
map <leader>nn :NERDTreeToggle<cr>
map <leader>nb :NERDTreeFromBookmark
map <leader>nf :NERDTreeFind<cr>
goyo.vim and vim-zenroom2 lets you only focus on one thing at a time. It removes all the distractions and centers the content. It has a special look when editing Markdown, reStructuredText and textfiles. It only has one mapping. (<leader>z
)
map <leader>z :Goyo<cr>
Fast saving of a buffer (<leader>w
):
nmap <leader>w :w!<cr>
Map <Space>
to /
(search) and <Ctrl>+<Space>
to ?
(backwards search):
map <space> /
map <c-space> ?
map <silent> <leader><cr> :noh<cr>
Disable highlights when you press <leader><cr>
:
map <silent> <leader><cr> :noh<cr>
Smart way to move between windows (<ctrl>j
etc.):
map <C-j> <C-W>j
map <C-k> <C-W>k
map <C-h> <C-W>h
map <C-l> <C-W>l
Closing of the current buffer(s) (<leader>bd
and (<leader>ba
)):
" Close current buffer
map <leader>bd :Bclose<cr>
" Close all buffers
autocmd BufRead,BufWrite * if ! &bin | silent! %s/\s+$//ge | endif map ba :1,1000 bd!
Useful mappings for managing tabs:
map <leader>tn :tabnew<cr>
map <leader>to :tabonly<cr>
map <leader>tc :tabclose<cr>
map <leader>tm :tabmove
" Opens a new tab with the current buffer's path
" Super useful when editing files in the same directory
map <leader>te :tabedit <c-r>=expand("%:p:h")<cr>/
Switch CWD to the directory of the open buffer:
map <leader>cd :cd %:p:h<cr>:pwd<cr>
Open ack.vim
for fast search:
map <leader>g :Ack
Quickly open a buffer for scripbble:
map <leader>q :e ~/buffer<cr>
Toggle paste mode on and off:
map <leader>pp :setlocal paste!<cr>
Visual mode pressing *
or #
searches for the current selection:
vnoremap <silent> * :call VisualSelection('f')<CR>
vnoremap <silent> # :call VisualSelection('b')<CR>
When you press gv you Ack.vim
after the selected text:
vnoremap <silent> gv :call VisualSelection('gv', '')<CR>
When you press <leader>r
you can search and replace the selected text:
vnoremap <silent> <leader>r :call VisualSelection('replace')<CR>
Surround the visual selection in parenthesis/brackets/etc.:
vnoremap $1 <esc>`>a)<esc>`<i(<esc>
vnoremap $2 <esc>`>a]<esc>`<i[<esc>
vnoremap $3 <esc>`>a}<esc>`<i{<esc>
vnoremap $$ <esc>`>a"<esc>`<i"<esc>
vnoremap $q <esc>`>a'<esc>`<i'<esc>
vnoremap $e <esc>`>a"<esc>`<i"<esc>
Quickly insert parenthesis/brackets/etc.:
inoremap $1 ()<esc>i
inoremap $2 []<esc>i
inoremap $3 {}<esc>i
inoremap $4 {<esc>o}<esc>O
inoremap $q ''<esc>i
inoremap $e ""<esc>i
inoremap $t <><esc>i
Insert the current date and time (useful for timestamps):
iab xdate <c-r>=strftime("%d/%m/%y %H:%M:%S")<cr>
$q is super useful when browsing on the command line. It deletes everything until the last slash:
cno $q <C-\>eDeleteTillSlash()<cr>
Bash like keys for the command line:
cnoremap <C-A> <Home>
cnoremap <C-E> <End>
cnoremap <C-K> <C-U>
cnoremap <C-P> <Up>
cnoremap <C-N> <Down>
Write the file as sudo (works only on Unix). Super useful when you open a file and you don't have permissions to save your changes. Vim tip:
:W
Pressing <leader>ss
will toggle spell checking:
map <leader>ss :setlocal spell!<cr>
Shortcuts using <leader>
instead of special characters:
map <leader>sn ]s
map <leader>sp [s
map <leader>sa zg
map <leader>s? z=
Query :help cope
if you are unsure what cope is. It's super useful!
When you search with Ack.vim
, display your results in cope by doing:
<leader>cc
To go to the next search result do:
<leader>n
To go to the previous search results do:
<leader>p
Cope mappings:
map <leader>cc :botright cope<cr>
map <leader>co ggVGy:tabnew<cr>:set syntax=qf<cr>pgg
map <leader>n :cn<cr>
map <leader>p :cp<cr>
Just do following:
- Remove
~/.vim_runtime
- Remove any lines that reference
.vim_runtime
in your~/.vimrc