|
syntax enable |
|
colorscheme slate |
|
|
|
set ai |
|
set autoread |
|
set background=dark |
|
set backspace=eol,start,indent |
|
set backupdir^=~/.vim/_backup// |
|
set directory^=~/.vim/_temp// |
|
set encoding=utf8 |
|
set expandtab |
|
set ffs=unix,dos,mac |
|
set history=500 |
|
set hlsearch |
|
set ignorecase |
|
set incsearch |
|
set laststatus=2 |
|
set lazyredraw |
|
set magic |
|
set mat=2 |
|
set noerrorbells |
|
set novisualbell |
|
set nowrap |
|
set number |
|
set ruler |
|
set shiftwidth=2 |
|
set showmatch |
|
set si |
|
set smartcase |
|
set smarttab |
|
set so=7 |
|
set statusline=\ %n:\ %F\ %m%r%y%=[%{strlen(&fenc)?&fenc:'none'}]\ [%{&ff}]\ %c/%l\ (%L)\ %P |
|
set t_vb= |
|
set tabstop=2 |
|
set softtabstop=2 |
|
set tm=500 |
|
set undodir^=~/.vim/_undo// |
|
" set undofile |
|
set whichwrap+=<,>,h,l |
|
set wildignore=*.o,*~,*.pyc,.git\* |
|
set wildmenu |
|
set wildmode=longest,list,full |
|
|
|
nnoremap <silent> <C-l> :nohl<CR><C-l> |
|
|
|
cnoremap <C-A> <Home> |
|
cnoremap <C-E> <End> |
|
cnoremap <C-K> <C-U> |
|
|
|
filetype plugin on |
|
filetype indent on |
|
|
|
let mapleader = "," |
|
let g:mapleader = "," |
|
|
|
" Python |
|
au FileType python setlocal sts=4 sw=4 ts=4 tw=79 colorcolumn=80 |
|
au BufRead,BufNewFile *.py match BadWhitespace /^\t\+/ |
|
au BufRead,BufNewFile *.py match BadWhitespace /\s\+$/ |
|
|
|
" Save as root |
|
cmap w!! %!sudo tee > /dev/null % |
|
|
|
let g:loaded_numbertoggle = 1 |
|
let g:insertmode = 0 |
|
let g:focus = 1 |
|
let g:relativemode = 1 |
|
|
|
" Enables relative numbers. |
|
function! EnableRelativeNumbers() |
|
set number |
|
set relativenumber |
|
endfunc |
|
|
|
" Disables relative numbers. |
|
function! DisableRelativeNumbers() |
|
set number |
|
set norelativenumber |
|
endfunc |
|
|
|
" NumberToggle toggles between relative and absolute line numbers |
|
function! NumberToggle() |
|
if(&relativenumber == 1) |
|
call DisableRelativeNumbers() |
|
let g:relativemode = 0 |
|
else |
|
call EnableRelativeNumbers() |
|
let g:relativemode = 1 |
|
endif |
|
endfunc |
|
|
|
function! UpdateMode() |
|
if(&number == 0 && &relativenumber == 0) |
|
return |
|
end |
|
|
|
if(g:focus == 0) |
|
call DisableRelativeNumbers() |
|
elseif(g:insertmode == 0 && g:relativemode == 1) |
|
call EnableRelativeNumbers() |
|
else |
|
call DisableRelativeNumbers() |
|
end |
|
|
|
if !exists("&numberwidth") || &numberwidth <= 4 |
|
" Avoid changing actual width of the number column with each jump between |
|
" number and relativenumber: |
|
let &numberwidth = max([4, 1+len(line('$'))]) |
|
else |
|
" Explanation of the calculation: |
|
" - Add 1 to the calculated maximal width to make room for the space |
|
" - Assume 4 as the minimum desired width if &numberwidth is not set or is |
|
" smaller than 4 |
|
let &numberwidth = max([&numberwidth, 1+len(line('$'))]) |
|
endif |
|
endfunc |
|
|
|
function! FocusGained() |
|
let g:focus = 1 |
|
call UpdateMode() |
|
endfunc |
|
|
|
function! FocusLost() |
|
let g:focus = 0 |
|
call UpdateMode() |
|
endfunc |
|
|
|
function! InsertLeave() |
|
let g:insertmode = 0 |
|
call UpdateMode() |
|
endfunc |
|
|
|
function! InsertEnter() |
|
let g:insertmode = 1 |
|
call UpdateMode() |
|
endfunc |
|
|
|
" Automatically set relative line numbers when opening a new document |
|
autocmd BufNewFile * :call UpdateMode() |
|
autocmd BufReadPost * :call UpdateMode() |
|
autocmd FilterReadPost * :call UpdateMode() |
|
autocmd FileReadPost * :call UpdateMode() |
|
|
|
" Automatically switch to absolute numbers when focus is lost and switch back |
|
" when the focus is regained. |
|
autocmd FocusLost * :call FocusLost() |
|
autocmd FocusGained * :call FocusGained() |
|
autocmd WinLeave * :call FocusLost() |
|
autocmd WinEnter * :call FocusGained() |
|
|
|
" Switch to absolute line numbers when the window loses focus and switch back |
|
" to relative line numbers when the focus is regained. |
|
autocmd WinLeave * :call FocusLost() |
|
autocmd WinEnter * :call FocusGained() |
|
|
|
" Switch to absolute line numbers when entering insert mode and switch back to |
|
" relative line numbers when switching back to normal mode. |
|
autocmd InsertEnter * :call InsertEnter() |
|
autocmd InsertLeave * :call InsertLeave() |
|
|
|
" ensures default behavior / backward compatibility |
|
if ! exists ( 'g:UseNumberToggleTrigger' ) |
|
let g:UseNumberToggleTrigger = 1 |
|
endif |
|
|
|
if exists('g:NumberToggleTrigger') |
|
exec "nnoremap <silent> " . g:NumberToggleTrigger . " :call NumberToggle()<cr>" |
|
elseif g:UseNumberToggleTrigger |
|
nnoremap <silent> <C-n> :call NumberToggle()<cr> |
|
endif |