Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
The ultimate vim configuration.
VimL Python Perl CoffeeScript CSS Erlang
Branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
autoload
sources_plugins
temp_dirs
vimrcs
.gitignore
.gitmodules
README.md

README.md

How to install

git clone git@github.com:adammenges/vimrc.git ~/.vim_runtime
cp ~/.vimrc ~/.vim_runtime/vimrcs/personal.vim # To keep a copy of your current vimrc
cp ~/.vim_runtime/vimrcs/vimrc ~/.vimrc

How to update to latest version?

Simply just do a git rebase!

cd ~/.vim_runtime
git pull --rebase

Some screenshots

Colors when editing a Python file: Screenshot 1

Opening recently opened files mru.vim: Screenshot 2

NERD Tree plugin in a terminal window: Screenshot 3

What plugins are included?

I recommend reading the docs of these plugins to understand them better. Each of them provide a much better Vim experience!

  • pathogen.vim: Manages the runtime path of the plugins
  • YankRing: Maintains a history of previous yanks, changes and deletes
  • snipMate.vim: snipMate.vim aims to be a concise vim script that implements some of TextMate's snippets features in Vim
  • syntastic: Syntax checking.
  • bufexplorer.zip: Buffer Explorer / Browser. This plugin can be opened with <leader+o>
  • Gundo: Undo tree.
  • NERD Tree: A tree explorer plugin for vim
  • zencoding: Super awesome speedy html construction.
  • ack.vim: Vim plugin for the Perl module / CLI script 'ack'
  • vim-rails: vim rails integration.
  • vim-surround: Easily surround and edit surrounding text.
  • vim-powerline: The ultimate vim statusline utility
  • ctrlp.vim: Fuzzy file, buffer, mru and tag finder. In my config it's mapped to <Ctrl+F>, because <Ctrl+P> is used by YankRing
  • mru.vim: Plugin to manage Most Recently Used (MRU) files. Includes my own fork which adds syntax highlighting to MRU. This plugin can be opened with <leader+f>
  • open_file_under_cursor.vim: Open file under cursor when pressing gf
  • vim-fugitive: Integration between git and vim.

What color schemes are included?

What modes are included?

How to include your own stuff?

After you have installed the setup you can create ~/.vim_runtime/vimrcs/personal.vim to fill in any configurations that are important for you.

You can also install your own plugins, for instance, via pathogen we can install vim-rails:

cd ~/.vim_runtime
git clone git://github.com/tpope/vim-rails.git sources_plugins/vim-rails

Now you have vim-rails installed ;-)

Key Mappings

Plugin related mappings

Open bufexplorer and see and manage the current buffers:

map <leader>o :BufExplorer<cr>

Open MRU.vim and see the recently open files:

map <leader>f :MRU<CR>

Open ctrlp.vim plugin:

let g:ctrlp_map = '<c-f>'

Open PeepOpen plugin:

map <leader>j :PeepOpen<cr>

Managing the NERD Tree plugin:

map <leader>nn :NERDTreeToggle<cr>
map <leader>nb :NERDTreeFromBookmark 
map <leader>nf :NERDTreeFind<cr>

Normal mode mappings

Fast saving of a buffer:

nmap <leader>w :w!<cr>

Treat long lines as break lines (useful when moving around in them):

map j gj
map k gk

Map <Space> to / (search) and <Ctrl>+<Space> to ? (backwards search):

map <space> /
map <c-space> ?
map <silent> <leader><cr> :noh<cr>

Disable highlight when <leader><cr> is pressed:

map <silent> <leader><cr> :noh<cr>

Smart way to move between windows:

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 current buffer(s):

" Close current buffer
map <leader>bd :Bclose<cr>

" Close all buffers
map <leader>ba :1,1000 bd!<cr>

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 vimgrep and put the cursor in the right position:

map <leader>g :vimgrep // **/*.<left><left><left><left><left><left><left>

Vimgreps in the current file:

map <leader><space> :vimgrep // <C-R>%<C-A><right><right><right><right><right><right><right><right><right>

Remove the Windows ^M - when the encodings gets messed up:

noremap <leader>m mmHmt:%s/<C-V><cr>//ge<cr>'tzt'm

Quickly open a buffer for scripbble:

map <leader>q :e ~/buffer<cr>

Toggle paste mode on and off:

map <leader>pp :setlocal paste!<cr>

Toggle Gundo:

<c-u>

Insert mode mappings

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>

Visual mode mappings

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 vimgrep 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>

Command line mappings

$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>

Spell checking

Pressing <leader>ss will toggle and untoggle spell checking

map <leader>ss :setlocal spell!<cr>

Shortcuts using <leader> instead of special chars

map <leader>sn ]s
map <leader>sp [s
map <leader>sa zg
map <leader>s? z=

Cope

Do :help cope if you are unsure what cope is. It's super useful!

When you search with vimgrep, 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

Vimscript 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>

General notes

This began as a fork of amix's vimrc, used as a great starting place for my own. However, since then it's changed extensively. Please feel free to use the changes for anything you'd like.

Something went wrong with that request. Please try again.