" " Vim configuration file (~/.vimrc) " 2009-2014, kolter <kolter@openics.org> " " This file is distributed in the hope that it will be useful, " but WITHOUT ANY WARRANTY " " {{{ Load Plugins call plug#begin('~/.vim/plugged') Plug 'junegunn/indentLine' Plug 'sjl/gundo.vim' Plug 'scrooloose/syntastic' Plug 'majutsushi/tagbar' Plug 'scrooloose/nerdtree' Plug 'bling/vim-airline' Plug 'kien/ctrlp.vim' Plug 'tpope/vim-fugitive' Plug 'airblade/vim-gitgutter' Plug 'gregsexton/gitv' Plug 'terryma/vim-multiple-cursors' Plug 'jlanzarotta/bufexplorer' Plug 'flazz/vim-colorschemes' Plug 'vim-scripts/comments.vim' Plug 'ervandew/supertab' Plug 'rstacruz/sparkup' Plug 'Lokaltog/vim-easymotion' Plug 'editorconfig/editorconfig-vim' Plug 'godlygeek/tabular' Plug 'plasticboy/vim-markdown' Plug 'http://git.openics.org/kolter/vim-bindzone.git' call plug#end() " }}} " {{{ General Settings " Filetypes Settings if has('autocmd') filetype plugin indent on "reload Vim config file after saving "autocmd BufWritePost $MYVIMRC :source $MYVIMRC "always limit the width for text files autocmd BufRead *.txt set tw=78 autocmd QuickFixCmdPre * botright cwindow 5 endif "Term settings (under tmux) if &term =~ '^screen' "tmux will send xterm-style keys when its xterm-keys option is on execute "set <xUp>=\e[1;*A" execute "set <xDown>=\e[1;*B" execute "set <xRight>=\e[1;*C" execute "set <xLeft>=\e[1;*D" endif set nocompatible "no vi compatibility set history=1000 "command history size set undolevels=120 "undo levels count set autoread "notify file changes set autochdir "switch to the current file directory set clipboard+=unnamed "share system clipboard set backup "enable backups set backupdir=~/.vim/backups "backup directory set directory=~/.vim/tmp "directory to place swap files in "Encoding settings if has("multi_byte") if &termencoding == "" let &termencoding = &encoding endif set encoding=utf-8 setglobal fileencoding=utf-8 set fileencodings=utf-8,default,latin1,ucs-bom endif "Syntax highlight syntax on set t_Co=256 set bg=dark colorscheme grb256 " }}} " {{{ Interface Settings set title "show title set number "show line numbers set ruler "statusline for each window set visualbell t_vb= "visual beep set showcmd "show incomplete commands set confirm "raise a dialog asking what to do instead of failing "set mouse=a "enable mouse support set lazyredraw "do not redraw when running macros set ttyfast "fast terminal connection support set ttimeout set ttimeoutlen=100 set scrolloff=999 set sidescrolloff=5 set shortmess=a "abbreviations on status line set laststatus=2 "always statusline set wildmenu "display completion menu set wildmode=list:longest,list:full "content of completion menu "ignore some extensions while completing filename "set wildignore=*.o,*.so,,*.gz,*.bz2,*.tar,*.tgz,*.tbz2,*.png,*.jpg,*.jpeg,*.gif set wildchar=<TAB> "wildcar expansion character set modeline "allow last lines of documents set vim mode set modelines=3 "number of lines to check for modelines " }}} " {{{ Keyboard Settings " keep ctrl-a/ctrl-e for begining/end of line nmap <c-a> <c-o>I imap <c-a> <c-o>I vmap <c-a> <c-o>I nmap <c-e> <c-o>A imap <c-e> <c-o>A vmap <c-e> <c-o>A "reopen current file map <F5> :e!<cr> "using redraw to disable highlighted search patterns nnoremap <c-L> :nohl<cr><c-L> "map F1 to open previous buffer nmap <F1> :bp<cr> imap <F1> <ESC>:bp<cr>a "map F2 to open next buffer nmap <F2> :bn<cr> imap <F2> <ESC>:bn<cr>a imap <c-@> <c-x><c-o> nmap <c-s-left> :tabprevious<cr> nmap <c-s-right> :tabnext<cr> nmap <c-s-up> :tabnew<cr> nmap <c-s-down> :tabclose<cr> nmap <c-d> :bw<cr> nmap <F6> :vsplit<cr> nmap <F7> :split<cr> "ctrl-$arrow to cycle around splitted windows map <c-left> <c-w>h map <c-right> <c-w>l map <c-Up> <c-w>k map <c-Down> <c-w>j "ident in visual mode keep selection vmap > >gv vmap < <gv " }}} " {{{ Editor Settings set fileformats=unix,dos,mac "support all three, in this order set hidden "make possible to change buffer without saving set report=0 "agressive reporting set pastetoggle=<F11> "use <F11> to toggle between 'paste' and 'nopaste' set nostartofline "leave the cursor where it is "indent settings set autoindent set backspace=indent,eol,start "enhance backspacing set smartindent set cindent set smarttab "tabs and spaces settings set expandtab "tab are spaces set tabstop=4 set shiftwidth=4 set shiftround "round indent to shiftwidth set softtabstop=4 set showmatch "brace/parenthese/bracket matching set nowrap "wrap long lines if has("multi_byte") set showbreak="…" else set showbreak="+++" endif "show some not printable chars set list if has("multi_byte") set listchars=trail:·,extends:>,precedes:<,nbsp:•,tab:▷\⋅ else set listchars=tab:>.,trail:·,extends:>,precedes:<,nbsp:% endif "search settings set hlsearch "highlight searches set incsearch "incremental searches set ignorecase "ignore case in search patterns set infercase "smart case support " }}} " {{{ Code folding set foldmethod=indent "fold based on indent set foldnestmax=10 "deepest fold is 10 levels set nofoldenable "dont fold by default set foldlevel=1 " }}} " {{{ Email Settings if has('autocmd') autocmd BufRead ~/.mutt/tmp/mutt-* set filetype=mail autocmd FileType mail set autoindent expandtab nocindent formatoptions=tcqn autocmd FileType mail vmap D dO[...]<CR> autocmd FileType mail call EnableSpellChecking() endif " }}} " {{{ Spell Checking "set spellfile=~/.vim/spell/words function! EnableSpellChecking() setlocal spell spelllang=fr,en_us let b:spell = 1 endfunction function! DisableSpellChecking() setlocal nospell unlet b:spell endfunction function! ToggleSpell() if !exists("b:spell") execute 'call EnableSpellChecking()' else execute 'call DisableSpellChecking()' endif endfunction nmap <F4> :call ToggleSpell()<CR> imap <F4> <Esc>:call ToggleSpell()<CR>a " }}} " {{{ Gundo extension Setup " Gundo sidebar on the right let g:gundo_right = 1 " Gundo layout let g:gundo_width = 60 let g:gundo_preview_height = 40 " Gundo status lines let g:gundo_tree_statusline = "Gundo" let g:gundo_preview_statusline = "Gundo Preview" " Preview pane below the buffer let g:gundo_preview_bottom = 1 " Close Gundo panes on revert let g:gundo_close_on_revert = 1 " F3 key to show/hide Gundo sidebar nnoremap <F3> :GundoToggle<CR> " }}} " {{{ Syntastic extension Setup " automatically open/close pane when errors (or not) let g:syntastic_auto_loc_list = 1 " Redefine errors/warning symbols on sidebar let g:syntastic_error_symbol = 'EE' let g:syntastic_style_error_symbol = 'ee' let g:syntastic_warning_symbol = 'WW' let g:syntastic_style_warning_symbol = 'Ws' " redefine default python linter "let g:syntastic_python_checker = 'pylint' " add options to python linter "let g:syntastic_python_checker_args = '' " }}} " {{{ ctrlp extension Setup " Change default key let g:ctrlp_map = '<c-o>' " Match window height let g:ctrlp_max_height = 20 " Add a key to search in opened buffers map <c-b> :CtrlPBuffer<cr> " }}} " {{{ airline extension setup let g:airline_powerline_fonts=1 let g:airline#extensions#tabline#enabled=1 " }}} " {{{ tagbar extension setup nmap <F8> :TagbarToggle<CR> " }}} " vim: foldmethod=marker foldlevel=0 foldenable