configfiles/vim/.vimrc

292 lines
7.4 KiB
VimL
Raw Normal View History

" Vim configuration
" Author: Mad <madmaurice@zom.bi>
" Last Revision: Thursday, 26. November 2015 17:51
2015-05-29 20:48:20 +02:00
set nocompatible
2015-10-28 19:22:10 +01:00
filetype off
2015-05-29 20:48:20 +02:00
2015-11-14 03:17:00 +01:00
" --- init vundle {{{
2015-10-28 19:22:10 +01:00
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
2015-05-29 20:48:20 +02:00
2015-10-31 00:03:54 +01:00
" --- Let Vundle manage Vundle
2015-10-28 19:22:10 +01:00
Plugin 'VundleVim/Vundle.vim'
2015-11-14 03:17:00 +01:00
" }}}
2015-07-10 17:49:49 +02:00
2015-11-14 03:17:00 +01:00
" --- My plugins {{{
2015-10-28 19:22:10 +01:00
Plugin 'scrooloose/nerdtree' " FileBrowser on the left side
Plugin 'ervandew/supertab' "Auto completion
Plugin 'ap/vim-templates' "File templates
Plugin 'godlygeek/tabular' "Tabularize
2015-10-28 19:35:26 +01:00
Plugin 'MarcWeber/vim-addon-mw-utils' " Dependency for snipmate
Plugin 'tomtom/tlib_vim' "Dependency for snipmate
Plugin 'garbas/vim-snipmate' "Snippets
2015-10-28 20:18:24 +01:00
Plugin 'easymotion/vim-easymotion' "Easy Motion
2015-10-31 00:03:54 +01:00
Plugin 'kana/vim-textobj-user' "User defined text objects
Plugin 'kana/vim-textobj-indent' "Indent based text objects
Plugin 'benmills/vimux' "Tmux integration
Plugin 'vim-scripts/argtextobj.vim' "function argument textobj
2015-10-31 20:53:30 +01:00
Plugin 'rstacruz/sparkup' "quick html writing
2015-11-02 21:03:07 +01:00
Plugin 'ap/vim-buftabline' "Buffer as tabline
Plugin 'vim-scripts/L9' "dependency for FuzzyFinder
Plugin 'vim-scripts/FuzzyFinder' "Fuzzy finding
2015-11-08 16:13:44 +01:00
Plugin 'cohama/lexima.vim' "Auto pairs
Plugin 'tpope/vim-surround' "Vim surround
2015-11-21 19:10:50 +01:00
Plugin 'vim-scripts/rfc-syntax' " RFC Syntax highlight
2015-11-14 03:17:00 +01:00
" }}}
2015-05-29 20:48:20 +02:00
2015-11-14 03:17:00 +01:00
" --- End init vundle {{{
2015-10-28 19:22:10 +01:00
call vundle#end()
filetype plugin indent on
2015-11-14 03:17:00 +01:00
" }}}
2015-07-10 17:49:49 +02:00
2015-11-14 03:17:00 +01:00
" --- General configurations {{{
2015-10-28 19:22:10 +01:00
set whichwrap+=<,>,[,]
set autoread "auto read file if changed
set wildmenu "Command completion
set gdefault " substitute all by default
2015-05-29 20:48:20 +02:00
set noruler
2015-10-28 19:22:10 +01:00
set laststatus=2 " Add Status line always
set number "Show linenumbers
set backspace=eol,start,indent "Make backspace behave like it's supposed to
set incsearch "Search while typing pattern
set lazyredraw "No redrawing while running macros
set magic "Allow magic modelines
2015-05-29 20:48:20 +02:00
set showmatch
set mat=2
2015-10-28 19:22:10 +01:00
set noerrorbells "No visual nuisance
2015-05-29 20:48:20 +02:00
set novisualbell
set t_vb=
set tm=500
2015-10-28 19:22:10 +01:00
set encoding=utf8 "Always use utf8
set ffs=unix,dos,mac " Auto use EOL according to file
2015-05-29 20:48:20 +02:00
set noswapfile
2015-10-28 19:22:10 +01:00
set expandtab "Tabbing
set smarttab " Deleting and creating spaces representing tabs
2015-10-28 19:22:10 +01:00
set ai "auto indent
set si "smart indent
set wrap "wrap lines
2015-05-29 20:48:20 +02:00
set shiftwidth=4
set tabstop=4
set lbr " Smart line breaking
2015-05-29 20:48:20 +02:00
set tw=500
2015-10-28 19:22:10 +01:00
set t_Co=256
set hidden
set scrolloff=1000
set shortmess+=I
syntax enable "Syntax highlighting
colorscheme madtheme "Colorscheme
2015-11-01 01:23:41 +01:00
" Backups in different folder
set backup
set writebackup
set backupdir=~/.vim/backup//
set directory=~/.vim/backup//
set undofile
set undodir=$HOME/.vim/undo
set undolevels=1000
set undoreload=10000
2015-12-14 22:30:07 +01:00
" Split behaviour
set splitright
set splitbelow
2015-11-14 03:17:00 +01:00
" we dont need to show the mode
set noshowmode
set listchars=eol:↲,tab:▶▹,nbsp:␣,extends:…,trail:•
2015-11-14 03:17:00 +01:00
" }}}
" --- Abbreviations {{{
iab _date <C-R>=strftime("%A, %d. %B %Y %H:%M")<CR>
iab _zmail madmaurice@zom.bi
iab _tumail valentin.gehrke@mailbox.tu-dresden.de
2015-11-14 03:17:00 +01:00
" }}}
2015-11-01 01:23:41 +01:00
2015-11-14 03:17:00 +01:00
" --- Autoload when saving vimrc {{{
au! BufWritePost .vimrc source ~/.vimrc
2015-11-14 03:17:00 +01:00
" }}}
" --- Vim file easyfolding {{{
augroup ft_vim
au!
au FileType vim setlocal foldmethod=marker
augroup END
" }}}
2015-05-29 20:48:20 +02:00
2015-11-14 03:17:00 +01:00
" --- Own functions {{{
2015-10-31 00:03:54 +01:00
function! AddSemicolon()
normal m'A;
normal `'
endfunction
function! RunCmdVimux()
let l:cmd = input("Run: ")
if l:cmd !~ '\s\+'
call VimuxRunCommand("clear && " . l:cmd)
endif
endfunction
function! IsModified()
if &modified
return '* '
endif
return ''
endfunction
2015-11-14 03:17:00 +01:00
" }}}
2015-11-14 03:17:00 +01:00
" --- ModeColor {{{
function! ModeColor(mode)
if a:mode == 'i'
if &paste
hi link ModeLine ModeLineInsertPaste
else
hi link ModeLine ModeLineInsert
endif
elseif a:mode == 'r'
hi link ModeLine ModeLineReplace
else
hi link ModeLine ModeLineNormal
endif
endfunction
au InsertEnter * call ModeColor(v:insertmode)
au InsertChange * call ModeColor(v:insertmode)
au InsertLeave * call ModeColor('n')
call ModeColor('n')
2015-11-14 03:17:00 +01:00
" }}}
2015-11-14 03:17:00 +01:00
" --- Bindings {{{
2015-07-10 17:49:49 +02:00
let mapleader = ","
" word movement with tab
nnoremap <Tab> W
nnoremap <S-Tab> B
" Close and write buffers
nnoremap <silent> <leader>q :b#<bar>bd#<CR>
nnoremap <silent> <leader>w :w<cr>
" Insert empty line before and after
2015-11-02 21:03:07 +01:00
nnoremap <silent> <C-o> o<ESC>kO
" Fuzzy Finder
nnoremap <silent> <leader>f :FufFile<cr>
" nnoremap <silent> <> ?^$<cr>
2015-10-31 00:03:54 +01:00
" evil spaces
nnoremap <silent> <leader>c m':%s/\s\+$//e<cr>`'
" double empty lines
nnoremap <silent> <leader>v m':%s/\n\{3,}/\r\r/e<cr>`'
" Toggle paste
2015-10-25 19:42:03 +01:00
nnoremap <silent> <leader>p :set invpaste paste?<cr>
2015-10-31 00:03:54 +01:00
" Quick tabularize
nnoremap <leader>a :Tabularize /
vnoremap <leader>a :'<,'>Tabularize /
2015-10-31 00:03:54 +01:00
" VimRC
nnoremap <leader>oc :e ~/.vimrc<cr>
nnoremap <leader>sc :so ~/.vimrc<cr>
" Toggle invisble chars
nnoremap <silent> <leader>i :set list!<cr>
2015-10-31 00:03:54 +01:00
" Vimux
nnoremap <leader>rr :call RunCmdVimux()<cr>
nnoremap <leader>rq :call VimuxCloseRunner()<cr>
nnoremap <silent> ; :call AddSemicolon()<cr>
2015-11-08 22:46:46 +01:00
nnoremap <silent> <leader>t :g/TODO/<cr>
" 0 should find first non blank
nmap 0 ^
" Easy buffer switching
nnoremap <silent> M :bnext<cr>
nnoremap <silent> N :bprev<cr>
2015-10-31 20:54:07 +01:00
" Moving through windows
2015-11-21 19:10:50 +01:00
nnoremap <silent> <C-l> <C-w>l
nnoremap <silent> <C-h> <C-w>h
nnoremap <silent> <C-j> <C-w>j
nnoremap <silent> <C-k> <C-w>k
2015-12-03 16:59:33 +01:00
inoremap <silent> <C-l> <Esc><C-w>l
inoremap <silent> <C-h> <Esc><C-w>h
inoremap <silent> <C-j> <Esc><C-w>j
inoremap <silent> <C-k> <Esc><C-w>k
2015-11-14 03:17:00 +01:00
nnoremap K :q<cr>
2015-10-31 20:54:07 +01:00
" Quick macroing
2015-11-08 22:46:46 +01:00
nnoremap Q @@
2015-10-31 00:03:54 +01:00
" --- Don't need a help
2015-07-10 17:49:49 +02:00
inoremap <F1> <nop>
nnoremap <F1> <nop>
vnoremap <F1> <nop>
2015-11-08 22:46:46 +01:00
" -- Make Y behave correct
map Y y$
" -- Quick adding of spaces
nnoremap <silent> <space> i<space><Esc>l
" Showing and hiding special characters
nnoremap <silent> <leader>l :set nolist!<cr>
2015-11-14 03:17:00 +01:00
" Equally resize windows
nnoremap <silent> <leader>= :wincmd =<cr>
2015-11-14 03:17:00 +01:00
" Automatic running
autocmd filetype python nnoremap <F5> :w<cr>:!python %<cr>
" Sudo to write
cnoremap w!! w !sudo tee % >/dev/null
2015-10-31 00:03:54 +01:00
" --- Just a nuisance
2015-11-21 19:10:50 +01:00
map q: <nop>
2015-10-31 00:03:54 +01:00
" --- No moving in insert mode allowed
2015-10-25 19:42:03 +01:00
ino <down> <Nop>
ino <up> <Nop>
ino <left> <Nop>
ino <right> <Nop>
2015-07-10 17:49:49 +02:00
2015-10-31 00:03:54 +01:00
" --- Different use of undo
2015-05-29 20:48:20 +02:00
nnoremap U <c-r>
2015-11-14 03:17:00 +01:00
" }}}
2015-05-29 20:48:20 +02:00
2015-11-14 03:17:00 +01:00
" --- Useless whitespaces {{{
2015-05-29 20:48:20 +02:00
highlight WhitespaceEOL ctermbg=Red guibg=Red
match WhitespaceEOL /\s\+$/
2015-11-14 03:17:00 +01:00
" }}}
2015-05-29 20:48:20 +02:00
2015-11-14 03:17:00 +01:00
" --- Rice {{{
set statusline=\ %#Modified#%{IsModified()}%*
set statusline+=%f
set statusline+=\ %#ModeLine#%=%*
set statusline+=\ L%l
set statusline+=\ C%c
hi Modified ctermfg=red
2015-10-15 20:48:01 +02:00
hi StatusLine cterm=None ctermfg=green ctermbg=none
hi Search cterm=NONE ctermfg=none ctermbg=none
2015-10-27 00:47:13 +01:00
hi IncSearch cterm=underline ctermbg=none ctermfg=green
2015-11-14 03:17:00 +01:00
" }}}
2015-05-29 20:48:20 +02:00
2015-11-14 03:17:00 +01:00
" --- Supertab {{{
2015-10-15 22:41:17 +02:00
let g:SuperTabNoCompleteAfter = ['^',',','\s']
2015-11-14 03:17:00 +01:00
" }}}
2015-10-28 19:22:10 +01:00
2015-11-14 03:17:00 +01:00
" --- NERDTree config {{{
2015-10-28 19:22:10 +01:00
nmap <silent> <leader>e :NERDTreeToggle<CR>
" Open NERDTree when vim is started without files to open
autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
" Auto refresh NERDTree when focus
autocmd WinEnter * if exists('b:NERDTree') | execute 'normal R' | endif
2015-10-31 00:03:54 +01:00
let NERDTreeWinSize = 30
let NERDChristmasTree = 0
let NERDTreeChDirMode = 2
let NERDTreeIgnore=['\~$','\.pyc$','\.swp$']
let NERDTreeWinPos="left"
let NERDTreeMinimalUI = 1
let NERDTreeQuitOnOpen = 1
2015-11-14 03:17:00 +01:00
" }}}
2015-10-31 00:03:54 +01:00
2015-11-14 03:17:00 +01:00
" --- EasyMotion config {{{
2015-11-21 19:10:50 +01:00
let g:EasyMotion_do_mapping = 0 " Disable default mappings
2015-10-28 20:18:24 +01:00
map / <Plug>(easymotion-sn)
omap / <Plug>(easymotion-tn)
map ? <Plug>(easymotion-bd-jk)
map f <Plug>(easymotion-s2)
"map n <Plug>(easymotion-next)
"map N <Plug>(easymotion-prev)
2015-11-14 03:17:00 +01:00
" }}}
2015-10-31 00:03:54 +01:00
2015-11-14 03:17:00 +01:00
" --- Auto pairs config {{{
2015-11-08 16:13:44 +01:00
let g:lexima_enable_basic_rules = 1
2015-11-14 03:17:00 +01:00
" }}}
" --- Codestyle {{{
match ErrorMsg '\%>80v.\+'
" }}}