211 lines
8.7 KiB
VimL
211 lines
8.7 KiB
VimL
"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
|