|
|
|
@ -0,0 +1,211 @@
|
|
|
|
|
"Installation: |
|
|
|
|
" $ mkdir -p ~/.vim/bundle |
|
|
|
|
" $ git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim |
|
|
|
|
" Insert the contant of this file into ~/.vimrc |
|
|
|
|
" $ vim |
|
|
|
|
" Type: :PluginInstall <ENTER> |
|
|
|
|
" Restart vim & be happy :) |
|
|
|
|
|
|
|
|
|
set nocompatible " be iMproved, required |
|
|
|
|
filetype off " required |
|
|
|
|
set rtp+=~/.vim/bundle/Vundle.vim |
|
|
|
|
call vundle#begin() |
|
|
|
|
Plugin 'VundleVim/Vundle.vim' |
|
|
|
|
Plugin 'https://github.com/airblade/vim-gitgutter' |
|
|
|
|
Plugin 'https://github.com/vim-airline/vim-airline' |
|
|
|
|
Plugin 'https://github.com/vim-airline/vim-airline-themes' |
|
|
|
|
Plugin 'https://github.com/altercation/vim-colors-solarized' |
|
|
|
|
Plugin 'https://github.com/scrooloose/nerdtree' |
|
|
|
|
Plugin 'https://github.com/vim-syntastic/syntastic' |
|
|
|
|
call vundle#end() " required |
|
|
|
|
filetype plugin indent on " required |
|
|
|
|
" |
|
|
|
|
" Brief help |
|
|
|
|
" :PluginList - lists configured plugins |
|
|
|
|
" :PluginInstall - installs plugins; append `!` to update or just :PluginUpdate |
|
|
|
|
" :PluginSearch foo - searches for foo; append `!` to refresh local cache |
|
|
|
|
" :PluginClean - confirms removal of unused plugins; append `!` to auto-approve removal |
|
|
|
|
|
|
|
|
|
syntax enable |
|
|
|
|
set background=dark |
|
|
|
|
"" Default Tab Setup |
|
|
|
|
set tabstop=4 |
|
|
|
|
set softtabstop=0 |
|
|
|
|
set shiftwidth=4 |
|
|
|
|
set expandtab |
|
|
|
|
set smarttab |
|
|
|
|
"set cindent " Interferes with filetype based intentation, automatic for |
|
|
|
|
set cinoptions=(0,u0,U0 |
|
|
|
|
"set smartindent " No effect with cindent enabled |
|
|
|
|
set autoindent " Retains intentation from previous line |
|
|
|
|
set copyindent |
|
|
|
|
set preserveindent " Might interfere with smarttab ? |
|
|
|
|
set paste |
|
|
|
|
set wildmenu " Tab Completion Menu |
|
|
|
|
set smartindent " Puppet Manifests Tab Setup |
|
|
|
|
"" Status Bar Setup |
|
|
|
|
set laststatus=2 |
|
|
|
|
set noshowmode |
|
|
|
|
set showcmd |
|
|
|
|
"" Needed for proper tabline display of anonymous buffers |
|
|
|
|
set hidden |
|
|
|
|
set mouse=r |
|
|
|
|
" Search options |
|
|
|
|
set ignorecase "ignore case when searching |
|
|
|
|
set smartcase "first search casesensivtive, then |
|
|
|
|
set incsearch "Just to searchresult while typing |
|
|
|
|
set hlsearch " Highlight search results |
|
|
|
|
hi Search guibg=lightRed |
|
|
|
|
|
|
|
|
|
" Press Space to turn off highlighting and clear any message already displayed. |
|
|
|
|
:nnoremap <silent> <Space> :nohlsearch<Bar>:echo<CR> |
|
|
|
|
" ------------------------------------ Colors / Theme ------------------------------------------- |
|
|
|
|
let g:solarized_visibility = "high" |
|
|
|
|
let g:solarized_contrast = "high" |
|
|
|
|
let g:solarized_termcolors = 256 |
|
|
|
|
colorscheme solarized |
|
|
|
|
|
|
|
|
|
augroup CursorLine |
|
|
|
|
au! |
|
|
|
|
au VimEnter,WinEnter,BufWinEnter * setlocal cursorline |
|
|
|
|
au WinLeave * setlocal nocursorline |
|
|
|
|
augroup END |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
" ------------------------------------ Keybindings ------------------------------------------- |
|
|
|
|
" toggle numbers |
|
|
|
|
noremap <C-l> :set invnumber<CR> |
|
|
|
|
inoremap <C-l> <C-O>:set invnumber<CR> |
|
|
|
|
map <C-n> :NERDTreeToggle<CR> |
|
|
|
|
" splits |
|
|
|
|
nnoremap <C-V> <C-W><C-V> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
" ------------------------------------ AirLine ------------------------------------------- |
|
|
|
|
let g:airline_theme='badwolf' |
|
|
|
|
let g:airline#extensions#tabline#enabled = 0 |
|
|
|
|
let g:airline#extensions#tabline#left_sep = ' ' |
|
|
|
|
let g:airline#extensions#tabline#left_alt_sep = '|' |
|
|
|
|
|
|
|
|
|
" ------------------------------------ SynTastic------------------------------------------- |
|
|
|
|
set statusline+=%#warningmsg# |
|
|
|
|
set statusline+=%{SyntasticStatuslineFlag()} |
|
|
|
|
set statusline+=%* |
|
|
|
|
|
|
|
|
|
let g:syntastic_always_populate_loc_list = 1 |
|
|
|
|
let g:syntastic_auto_loc_list = 1 |
|
|
|
|
let g:syntastic_check_on_open = 1 |
|
|
|
|
let g:syntastic_check_on_wq = 0 |
|
|
|
|
|
|
|
|
|
" ------------------------------------ NERDTree ------------------------------------------- |
|
|
|
|
"" NERDTree Setup |
|
|
|
|
let g:NERDTreeDirArrowExpandable = '>' |
|
|
|
|
let g:NERDTreeDirArrowCollapsible = 'v' |
|
|
|
|
" close vim if only in nerdtree |
|
|
|
|
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif |
|
|
|
|
|
|
|
|
|
" ------------------------------------ GitGutter ------------------------------------------- |
|
|
|
|
"" GitGutter Setup |
|
|
|
|
set updatetime=250 |
|
|
|
|
let g:gitgutter_enabled = 1 |
|
|
|
|
let g:gitgutter_signs = 1 |
|
|
|
|
let g:gitgutter_highlight_lines = 0 |
|
|
|
|
if executable('/usr/bin/git') == 0 |
|
|
|
|
let g:gitgutter_git_executable = "/bin/true" |
|
|
|
|
let g:gitgutter_enabled = 1 |
|
|
|
|
endif |
|
|
|
|
let g:gitgutter_max_signs = 500 " default value |
|
|
|
|
let g:gitgutter_realtime = 1 |
|
|
|
|
let g:gitgutter_eager = 1 |
|
|
|
|
|
|
|
|
|
" ------------------------------------ Whitespace Highlighting ------------------------------------------- |
|
|
|
|
autocmd ColorScheme * highlight ExtraWhitespaces ctermbg=red guibg=red |
|
|
|
|
"" Extra Whitespace Highlighting |
|
|
|
|
highlight ExtraWhitespaces ctermbg=red guibg=red |
|
|
|
|
"Show tabs and spaces after the inital (tabs and) spaces |
|
|
|
|
"Show trailing whitespace only after some text (ignores blank lines) |
|
|
|
|
"Show tabs that are not at the start of a line (and all spaces after too) |
|
|
|
|
function! <SID>MatchExtraWhitespacesNow() |
|
|
|
|
if exists("b:sew") |
|
|
|
|
if b:sew == 1 |
|
|
|
|
match ExtraWhitespaces /^\t* \+\zs\(\t\+ *\)\+\|\S\zs\(\s\+$\| *\zs\(\t\+ *\)\+\)/ |
|
|
|
|
else |
|
|
|
|
if exists("b:sewb") |
|
|
|
|
if b:sewb == 1 |
|
|
|
|
match ExtraWhitespaces /\S\zs\s\+$/ |
|
|
|
|
else |
|
|
|
|
:call clearmatches() |
|
|
|
|
endif |
|
|
|
|
endif |
|
|
|
|
endif |
|
|
|
|
endif |
|
|
|
|
endfunction |
|
|
|
|
function! <SID>MatchExtraWhitespacesNowInsert() |
|
|
|
|
if exists("b:sew") |
|
|
|
|
if b:sew == 1 |
|
|
|
|
match ExtraWhitespaces /^\t* \+\zs\(\t\+ *\)\+\|\S\zs\(\s\+\%#\@<!$\| *\zs\(\t\+ *\)\+\)/ |
|
|
|
|
else |
|
|
|
|
if exists("b:sewb") |
|
|
|
|
if b:sewb == 1 |
|
|
|
|
match ExtraWhitespaces /\S\zs\s\+\%#\@<!$/ |
|
|
|
|
else |
|
|
|
|
:call clearmatches() |
|
|
|
|
endif |
|
|
|
|
endif |
|
|
|
|
endif |
|
|
|
|
endif |
|
|
|
|
endfunction |
|
|
|
|
"" Extra Whitespace Stripping |
|
|
|
|
function! <SID>StripExtraWhitespaces() |
|
|
|
|
if exists("b:sewb") |
|
|
|
|
if b:sewb == 1 |
|
|
|
|
let l = line(".") |
|
|
|
|
let c = col(".") |
|
|
|
|
"Remove trailing whitespace only after some text (ignores blank lines) |
|
|
|
|
%s/\S\zs\s\+$//ge |
|
|
|
|
if exists("b:sew") |
|
|
|
|
if b:sew == 1 |
|
|
|
|
"Remove tabs and spaces after the inital (tabs and) spaces |
|
|
|
|
%s/^\t* \+\zs\(\t\+ *\)\+//ge |
|
|
|
|
"Replace tabs that are not at the start of a line |
|
|
|
|
"(and all spaces after too) with a single space to keep |
|
|
|
|
"tokens apart |
|
|
|
|
%s/\S *\zs\(\t\+ *\)\+/ /ge |
|
|
|
|
endif |
|
|
|
|
endif |
|
|
|
|
call cursor(l, c) |
|
|
|
|
endif |
|
|
|
|
endif |
|
|
|
|
endfunction |
|
|
|
|
autocmd BufWinEnter * :call <SID>MatchExtraWhitespacesNow() |
|
|
|
|
autocmd InsertEnter * :call <SID>MatchExtraWhitespacesNowInsert() |
|
|
|
|
autocmd InsertLeave * :call <SID>MatchExtraWhitespacesNow() |
|
|
|
|
autocmd BufWinLeave * :call clearmatches() |
|
|
|
|
autocmd FileType c,changelog,conf,config,cpp,csh,diff,dosini,eruby,fstab,git,gitcommit,gitconfig,gitrebase,haskell,make,pamconf,puppet,ruby,sh,spec,sshconfig,sudoers,tex,vim,yaml,zsh let b:sewb=1 | let b:sew=0 | :call <SID>MatchExtraWhitespacesNow() |
|
|
|
|
autocmd BufWritePre <buffer> :call <SID>StripExtraWhitespaces() |
|
|
|
|
command Sewb let b:sewb=1 | let b:sew=0 | :call <SID>MatchExtraWhitespacesNow() |
|
|
|
|
command Sew let b:sewb=1 | let b:sew=1 | :call <SID>MatchExtraWhitespacesNow() |
|
|
|
|
command Sewbnow let b:sewb=1 | let b:sew=0 | :call <SID>StripExtraWhitespaces() | :call <SID>MatchExtraWhitespacesNow() |
|
|
|
|
command Sewnow let b:sewb=1 | let b:sew=1 | :call <SID>StripExtraWhitespaces() | :call <SID>MatchExtraWhitespacesNow() |
|
|
|
|
command Nosewb let b:sewb=0 | let b:sew=0 | :call <SID>MatchExtraWhitespacesNow() |
|
|
|
|
command Nosew let b:sew=0 | :call <SID>MatchExtraWhitespacesNow() |
|
|
|
|
""------------------------------------ Vimdiff Setup ---------------------------------------------------- |
|
|
|
|
highlight DiffAdd cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red |
|
|
|
|
highlight DiffDelete cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red |
|
|
|
|
highlight DiffChange cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red |
|
|
|
|
highlight DiffText cterm=bold ctermfg=10 ctermbg=88 gui=none guifg=bg guibg=Red |
|
|
|
|
"" Disable syntax highlighting in diff mode only |
|
|
|
|
if &diff |
|
|
|
|
syntax off |
|
|
|
|
endif |
|
|
|
|
" ------------------------------------ More Cool Stuff ------------------------------------------- |
|
|
|
|
"" UTF-8 Setup |
|
|
|
|
if has("multi_byte") |
|
|
|
|
if &termencoding == "" |
|
|
|
|
let &termencoding = &encoding |
|
|
|
|
endif |
|
|
|
|
set encoding=utf-8 |
|
|
|
|
setglobal fileencoding=utf-8 |
|
|
|
|
"setglobal bomb |
|
|
|
|
set fileencodings=ucs-bom,utf-8,latin1 |
|
|
|
|
endif |