" " Vim configuration file " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Useful functions " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" function! CleanClose() let todelbufNr = bufnr("%") let newbufNr = bufnr("#") if ((newbufNr != -1) && (newbufNr != todelbufNr) && buflisted(newbufNr)) exe "b".newbufNr else bnext endif if (bufnr("%") == todelbufNr) new endif exe "bd".todelbufNr endfunction function! GetFileSize() let size = '' let bytes = getfsize(expand('%:p')) if bytes <= 1024 let size = bytes . 'B' elseif bytes <= 1048576 let size = (bytes / 1024) . 'KB' elseif bytes <= (1073741824) let size = (bytes / 1048576) . 'MB' elseif bytes <= 1099511627776 let size = (bytes / 1073741824) . 'GB' elseif bytes <= 1125899906842624 let size = (bytes / 1099511627776) . 'TB' endif return size endfunction function! GetMode() let curmode = mode() let mode = curmode if curmode == 'n' let mode = 'NORMAL' elseif curmode == 'i' let mode = 'INSERT' elseif curmode == 'R' let mode = 'REPLACE' elseif curmode == 'v' let mode = 'VISUAL' elseif curmode == 'V' if has("multi_byte") let mode = 'V⋅LINE' else let mode = 'VLINE' endif elseif curmode == 'V' if has("multi_byte") let mode = 'V⋅BLOC' else let mode = 'VBLOC' endif endif return mode endfunction """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " General Settings " """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" "Term settings (under tmux) if &term =~ '^screen' "tmux will send xterm-style keys when its xterm-keys option is on execute "set =\e[1;*A" execute "set =\e[1;*B" execute "set =\e[1;*C" execute "set =\e[1;*D" endif set nocompatible "no vi compatibility set history=200 "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=$HOME/tmp "backup directory set directory=$HOME/tmp "directory to place swap files in set viminfo+=n$HOME/tmp/.viminfo "viminfo path "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 """"""""""""""""""""""""""""""""""""""""""""""""""""""""""" " 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 shortmess=a "abbreviations on status line set laststatus=2 "always statusline set statusline= set statusline+=\ %<%F\ %h%m%r%y%w if version >= 730 set statusline+=%q endif set statusline+=\ [%{GetMode()}(%n,%{mode()})] "set statusline+=\ %{fugitive#statusline()} set statusline+=%= set statusline+=[ set statusline+=%{&fileformat} set statusline+=,%{&fenc==\"\"?&enc:&fenc} set statusline+=%{(exists(\"+bomb\")\ &&\ &bomb)?\",bom\":\"\"} set statusline+=%{(exists(\"+binary\")\ &&\ &binary)?\",bin\":\"\"} set statusline+=%{&endofline==1?\",eol\":\",noeol\"} set statusline+=] set statusline+=\ %{GetFileSize()} set statusline+=\ %k\ %-14.(%l/%L,%c%V%)\ %P\ %3p%% 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= "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 I imap I vmap I nmap A imap A vmap A "reopen current file map :e! "using redraw to disable highlighted search patterns nnoremap :nohl "map F1 to open previous buffer nmap :bp imap :bpa "map F2 to open next buffer nmap :bn imap :bna imap nmap :tabprevious nmap :tabnext nmap :tabnew nmap :tabclose nmap :bw nmap :call CleanClose() nmap :vsplit nmap :split "ctrl-$arrow to cycle around splitted windows map h map l map k map j "ident in visual mode keep selection vmap > >gv vmap <