|
@@ -0,0 +1,264 @@
|
|
|
+"
|
|
|
+" 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 <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=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=<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-x> :bw<cr>
|
|
|
+nmap <c-end> :call CleanClose()<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 backspace=indent,eol,start "enhance backspacing
|
|
|
+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 smartindent
|
|
|
+set cindent
|
|
|
+
|
|
|
+"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
|
|
|
+
|
|
|
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
|
+" Filetypes Settings
|
|
|
+"
|
|
|
+"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
|
|
|
+filetype plugin indent on
|
|
|
+
|