Skip to content

umayr/vimrc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vimrc

This is fork of amix's awesome vimrc.

There are two versions of configurations:

  • Basic: If you want something small just copy basic.vim into your ~/.vimrc and you will have a great basic setup.
  • Extended: This includes a ton of useful plugins, color schemes and configurations.

Well, for obvious reasons Extended version is recommended.

Installation

   # For basic installation
   $ bash <(curl -s https://raw.githubusercontent.com/umayr/vimrc/master/install.sh)
   
   # For extended installation
   $ bash <(curl -s https://raw.githubusercontent.com/umayr/vimrc/master/install.sh) --extended

Note: The taglist.vim plugin will require ctags (For Debian: apt-get install ctags)

Windows?

Do yourself a favour and use cmder if you're not using it and run the installation instructions above. No special instructions needed.

Fonts

It is recommended to use patched fonts for terminal so that airline would show special separtors, you can get all patched fonts from powerline/fonts. I also recommend using Ubuntu Mono derivative Powerline (it's a patched version of Ubuntu's default monospace font for writing and programming).

Update

Simply just do a git rebase:

   $ cd ~/.vim/runtime && git pull --rebase

Screenshots

Empty vim using Solarized Dark theme: screenshot from 2015-11-10 12 52 26

NERD Tree in action: screenshot from 2015-11-10 12 53 22

CtrlP.vim in action: screenshot from 2015-11-10 12 54 11

MRU.vim displays most recent used files: screenshot from 2015-11-10 12 56 26

Distraction free mode using Goyo: screenshot from 2015-11-10 12 59 01

Plugins

For better understanding of how these plugins work, please refer to their docs. 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
  • bufexplorer.zip: Buffer Explorer / Browser. This plugin can be opened with <leader+o>
  • NERD Tree: A tree explorer plugin for vim
  • ack.vim: Vim plugin for the Perl module / CLI script 'ack'
  • ag.vim: A much faster Ack
  • 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
  • emmet-vim: Expanding abbreviation like zen-coding, very useful for editing XML, HTML.
  • vim-indent-object: Defines a new text object representing lines of code at the same indent level. Useful for python/vim scripts
  • taglist.vim: Source code browser (supports C/C++, java, perl, python, tcl, sql, php, etc)
  • vim-multiple-cursors: Sublime Text style multiple selections for Vim, CTRL+N is remapped to CTRL+S (due to YankRing)
  • vim-expand-region: Allows you to visually select increasingly larger regions of text using the same key combination.
  • vim-airline: Lean & mean status/tabline for vim that's light as air (replacing powerline)
  • vim-fugitive: A Git wrapper so awesome, it should be illegal
  • goyo.vim and vim-zenroom2: Remove all clutter and focus only on the essential. Similar to iA Writer or Write Room Read more here
  • 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.
  • syntastic: Syntax checking hacks for vim

You can also install your own plugins via Pathogen.

This configuration relies on git submodules to manage plugins rather than cloning them. For instance, to install vim-rails:

    $ cd ~/.vim/runtime
    $ git submodule add git://github.com/tpope/vim-rails.git sources/vim-rails

And that's it, now you have vim-rails installed.

In order to update plugins:

    $ cd ~/.vim/runtime
    $ git submodule update --recursive

Color Schemes

Modes

Personal Config

After the extended installation, it makes the following directory structure:

.vim/
├── backups/
├── config.vim
├── runtime/
│   ├── autoload/
│   ├── install.sh
│   ├── README.md
│   ├── sources/
│   └── config/
├── swaps/
└── undo/

You can add any of your personal configurations in the config.vim file.

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>

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.

map <leader>z :Goyo<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>

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>

Write the file as sudo (only on Unix). Super useful when you open a file and you don't have permissions to save your changes. Vim tip:

:W 

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>

License

MIT

About

V for VIM — Sensible VIM default configs to save the world.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 12