diff --git a/vimrc b/vimrc index fd7ba5e..d46dd6e 100644 --- a/vimrc +++ b/vimrc @@ -94,6 +94,7 @@ endif call plug#begin() Plug 'drewtempelmeyer/palenight.vim' Plug 'https://tpope.io/vim/surround.git' +Plug 'https://github.com/tpope/vim-repeat.git' Plug 'https://github.com/tpope/vim-fugitive.git' Plug 'https://github.com/suan/vim-instant-markdown', {'for': 'markdown'} "Plug 'plasticboy/vim-markdown', {'for': 'markdown'} @@ -110,42 +111,67 @@ let g:instant_markdown_autostart = 1 """""""""""""""""""""""""""""""""""" -set softtabstop=4 -set tabstop=4 -set shiftwidth=4 -set expandtab -set smarttab +" change cursor shape for different editing modes, neovim does this by default +if !has('nvim') + if exists('$TMUX') + let &t_SI = "\Ptmux;\\e[5 q\\\" + let &t_SR = "\Ptmux;\\e[4 q\\\" + let &t_EI = "\Ptmux;\\e[2 q\\\" + else + let &t_SI = "\e[6 q" + let &t_SR = "\e[4 q" + let &t_EI = "\e[2 q" + endif +endif -set errorformat+=%.%#PHP:\ %m\ \(in\ %f\ on\ line\ %l\)%.%#, - \%E%[0-9]%#.%m:%f?rev=%.%##L%l\ %.%#,%C%.%# +command! W execute 'silent w !sudo tee % >/dev/null' | edit! -autocmd BufNewFile,BufRead svn-commit.*tmp :0r $SVN_COMMIT_TEMPLATE +" open a terminal in $PWD +nnoremap tt :terminal -set nocompatible -set tags=tags;/ +" ------ autocmd ------ -set incsearch " incrimental search -set hlsearch " highlighting when searching +" Reload changes if file changed outside of vim requires autoread +augroup load_changed_file + autocmd! + autocmd FocusGained,BufEnter * if mode() !=? 'c' | checktime | endif + autocmd FileChangedShellPost * echo "Changes loaded from source file" +augroup END -filetype indent plugin off -set autoindent -set backspace=2 +" when quitting a file, save the cursor position +augroup save_cursor_position + autocmd! + autocmd BufReadPost * call setpos(".", getpos("'\"")) +augroup END -set nolist " show/hide tabs and EOL chars (hidden characters) -set number " show/hide line numbers (nu/nonu) -set scrolloff=5 " scroll offset, min lines above/below cursor -"set scrolljump=5 " jump 5 lines when running out of the screen - NO -set sidescroll=10 " minimum columns to scroll horizontally -set showcmd " show command status -set showmatch " flashes matching parenthese when cursor over the other one -set showmode " show editing mode in status (-- INSERT --) -set ruler " show cursor position -set errorbells " bells in terminal -set undolevels=1000 " number of undos stored -set viminfo='50,"50 " '=marks for x files, "=registers for x files +" when not running in a console or a terminal that doesn't support 256 colors +" enable cursorline in the currently active window and disable it in inactive ones +if $DISPLAY !=? '' && &t_Co == 256 + augroup cursorline + autocmd! + autocmd VimEnter,WinEnter,BufWinEnter * setlocal cursorline + autocmd WinLeave * setlocal nocursorline + augroup END +endif -set nofoldenable -"set foldmethod=indent " indent based folding +" when entering insert mode, relative line +" numbers are turned off, leaving absolute line numbers turned on +augroup numbertoggle + autocmd! + autocmd BufEnter,FocusGained,InsertLeave * set number relativenumber + autocmd BufLeave,FocusLost,InsertEnter * set number norelativenumber +augroup END + +hi clear CursorLine +augroup CLClear + autocmd! ColorScheme * hi clear CursorLine +augroup END + +hi CursorLineNR cterm=bold +augroup CLNRSet + set cursorline + autocmd! ColorScheme * hi CursorLineNR cterm=bold +augroup END " define indent-based folding, after loading a file switch to manual folding augroup vimrc @@ -160,7 +186,7 @@ au BufWinEnter ?* silent loadview au FileType xml setlocal shiftwidth=2 tabstop=2 au FileType c setl ofu=ccomplete#CompleteCpp -au BufNewFile,BufRead *.py,*.pyw,*.pyx,?akefil* +au BufNewFile,BufRead *.py,*.pyw,*.pyx,?akefil* \ setlocal tabstop=4 shiftwidth=4 noexpandtab autoindent \ textwidth=79 fileformat=unix " Linux kernel style tabs @@ -168,9 +194,61 @@ au BufNewFile,BufRead *.c,*.h,*.cpp \ setlocal tabstop=8 shiftwidth=8 softtabstop=8 noexpandtab autoindent \ textwidth=79 fileformat=unix +" ------ adv maps ------ + +" strip trailing whitespace, ss (strip space) +nnoremap ss + \ :let b:_p = getpos(".") + \ let b:_s = (@/ != '') ? @/ : '' + \ %s/\s\+$//e + \ let @/ = b:_s + \ nohlsearch + \ unlet b:_s + \ call setpos('.', b:_p) + \ unlet b:_p + + +set softtabstop=4 +set tabstop=4 +set shiftwidth=4 +set expandtab +set smarttab + +set errorformat+=%.%#PHP:\ %m\ \(in\ %f\ on\ line\ %l\)%.%#, + \%E%[0-9]%#.%m:%f?rev=%.%##L%l\ %.%#,%C%.%# + +autocmd BufNewFile,BufRead svn-commit.*tmp :0r $SVN_COMMIT_TEMPLATE + +set tags=tags;/ + +set incsearch " incrimental search +set hlsearch " highlighting when searching + +filetype indent plugin off +set autoindent +set backspace=2 + +set nolist " show/hide tabs and EOL chars (hidden characters) +set number " show/hide line numbers (nu/nonu) +set relativenumber " use relative number +set confirm " ask confirmation like save before quit. +set wildmenu " Tab completion menu when using command mode +set scrolloff=5 " scroll offset, min lines above/below cursor +"set scrolljump=5 " jump 5 lines when running out of the screen - NO +set sidescroll=10 " minimum columns to scroll horizontally +set showcmd " show command status +set showmatch " flashes matching parenthese when cursor over the other one +set showmode " show editing mode in status (-- INSERT --) +set ruler " show cursor position +set errorbells " bells in terminal +set undolevels=1000 " number of undos stored +set viminfo='50,"50 " '=marks for x files, "=registers for x files + +set nofoldenable +"set foldmethod=indent " indent based folding + set encoding=utf-8 " important for powerline besides others -set smartcase " override 'ignorecase' when pattern has upper case characters -set relativenumber " use relative number +set smartcase " override 'ignorecase' when pattern has upper case characters vmap gb :!git blame % -L=line("'<") ,=line("'>") @@ -179,10 +257,6 @@ nmap gb :!git blame % colo palenight " new fav highlighting set mouse=a " enable mouse in n,v,i,c,h modes -":set cursorline " Enable cursor line position tracking -":highlight clear CursorLine " Remove the underline from enabling cursorline -":highlight CursorLineNR ctermbg=darkgrey " Set line numbering to red background - set laststatus=2 " show powerline status bar set t_Co=256 let g:Powerline_symbols = "fancy" " sth like this probably set as a default but won't hurt here