+set smartindent
[dotvim.git] / vimrc
diff --git a/vimrc b/vimrc
index ae3eaf5125aed7288722aefb4b286a2655759a04..4e5fc18da6e901967fa49fb12f7106e79033c13d 100644 (file)
--- a/vimrc
+++ b/vimrc
@@ -3,24 +3,38 @@ let b:vim_conf_dir = $HOME.'/.vim'
 if has("win32")
     let b:vim_conf_dir = $HOME.'\vimfiles'
 endif
+set nocompatible
 
 if isdirectory( b:vim_conf_dir . '/tmp/') == 0
     call mkdir(b:vim_conf_dir.'/tmp/', 'p', 0700)
 endif
 
-set nocompatible
 
 "load plugins
 if filereadable(b:vim_conf_dir . '/plugins.vundel.vim')
     exec 'source ' . b:vim_conf_dir . '/plugins.vundel.vim'
 endif
+"
+" auskommentiert, macht in screen das nix gut aussieht..
+"set termguicolors
+set background=dark
+try
+    let g:gruvbox_contrast_dark = 'hard'
+    let g:gruvbox_italicize_comments = 0
+    colorscheme gruvbox
+catch /^Vim\%((\a\+)\)\=:E185/
+    "  wird evtl rest instlliert... E185 heißt nicht gefunden..
+endtry
+
+syntax on
 
 set backspace=indent,eol,start
 set relativenumber
 set number
-"set lazyredraw
+set lazyredraw
 
 set autoindent
+set smartindent
 set expandtab
 set tabstop=4
 set softtabstop=4
@@ -28,8 +42,6 @@ set shiftwidth=4
 
 set pastetoggle=<F3>
 
-set scrolloff=5
-"set sidescrolloff=10
 set encoding=utf-8
 set modeline
 
@@ -83,15 +95,15 @@ nnoremap <C-l> <C-W>l
 nnoremap <Leader>i a'" <<  << "' <Esc>6hi
 nnoremap <Leader>a a'{}' <Esc>2hi
 nnoremap <Leader>A a'"+  +"' <Esc>4hi
-
-nnoremap <Leader>A a'"+  +"' <Esc>4hi
+autocmd FileType cpp nnoremap <Leader>a a'"<<  <<"' <Esc>5hi
 
 " see :h restore-position
-nnoremap <Leader>= msHmp=iB'pzt`s
+nnoremap <Leader>= msgg=G`s
 
 inoremap kj <Esc>
 inoremap jk <Esc>
 inoremap ts<tab> // TODOts: <Esc>=$A
+inoremap obs<tab> /// <para><CR> OBSOLETE kann nach der Abspaltung von 1.12 entfernt werden<CR><Esc>=$A
 inoremap no<tab> <Esc>0i <nodoc /><Esc>0i///<Esc>=$
 inoremap td<tab> <Esc>0i//TODOts: doku<CR><summary> </summary><Esc>0i/// <Esc>kVj=$
 
@@ -112,13 +124,17 @@ nnoremap  ZZ :wqall<CR>
 nnoremap  <F6> :wa<CR>:make -j 8<CR><CR>
 inoremap  <F6> <esc>:wa<CR>:make -j 8<CR><CR>
 
+nnoremap  <F5> :wa\|!./%<CR>
+inoremap  <F5> <esc>:wa\|!./%<CR>
+
 nnoremap <C-l> <C-W>l
 
 " Copy paste to/from system clipboard
 vnoremap <C-c> "*y
-inoremap <C-S-v> <esc>"*p
-vnoremap <C-S-v> "*p
-
+noremap  <C-v> "*p
+noremap  <C-V> "*p
+inoremap <C-v> <esc>"*p
+vnoremap <C-v> "*p
 
 "nnoremap <Leader>= mzgg=G`z<CR>
 nnoremap <F2> :call FormatDocument()<CR>
@@ -135,13 +151,11 @@ nnoremap <M-j> :m +1<CR>==
 " repeat last command on all selected:
 vnoremap . :normal.<CR>
 
-
-"vnoremap <leader>tt :Tabular /^[^=]*\zs\S*=/l1l2<cr>
-vnoremap <leader>tt :Tabular /^[^-+=]*\zs\S*=/l1l2<cr>
+vnoremap <leader>tt :Tabular /^[^-+=]*\zs\S*=/l1l1<cr>
 vnoremap <leader>t, :Tabular /,\zs/l1l1<cr>
-vnoremap <leader>t<space>  :Tabular /\s\+\zs/l1l1<cr>
+vnoremap <leader>t<space>  :Tabular /\s\+\zs/l1l0<cr>
+vnoremap <leader>t:        :Tabular /:\zs/l1l0<cr>
 vnoremap <leader>t(  :Tabular /(/l1l0<cr>
-vnoremap <leader>t:  :Tabular /:/r0c1l0<cr>
 "
 " append word under cursor with 'or' to current search pattern
 nnoremap <Leader>s yiw/<C-R>/\\|<C-R>"<cr>
@@ -158,17 +172,8 @@ else
     nnoremap <Leader>r :source ~/.vim/vimrc<CR>
 endif
 
-
 filetype plugin indent on
 
-let g:deoplete#enable_at_startup = 1
-call deoplete#custom#option({
-            \ 'auto_complete': v:true,
-            \ 'smart_case': v:true,
-            \ 'auto_complete_popup': 'auto'
-            \ })
-
-
 " ack seems to have vanished from artfull, thus use silversearchger-ag
 " for ack.vim:
 if executable('ag')
@@ -177,21 +182,30 @@ endif
 
 set list listchars=tab:→\ ,trail:·
 
+hi Visual  guifg=White guibg=Blue gui=bold
 
 set diffopt+=vertical
-set diffopt+=iwhite
+"set diffopt+=iwhite
 set diffopt+=algorithm:patience
 "jump to next diff and center line
 noremap <leader>n ]cz.
 noremap <leader>p [cz.
+if has ('win32')
+    set guifont=DejaVu_Sans_Mono:h11:cANSI:qDRAFT
+endif
 if &diff
     " ignore whitespace
     set diffopt+=vertical
     set diffopt+=iwhite
     set diffopt+=algorithm:patience
+
     syntax off
+    highlight DiffText term=reverse cterm=reverse ctermfg=214 ctermbg=234 gui=reverse guifg=lightgreen guibg=DarkGreen
     " go fullscreen:
-    autocmd GuiEnter * simalt ~x
+    if has ('win32')
+        autocmd GuiEnter * simalt ~x
+        set guifont=DejaVu_Sans_Mono:h8:cANSI:qDRAFT
+    endif
     " make all diff windows the same size
     autocmd VimResized * wincmd =
     autocmd VimEnter *  2wincmd w
@@ -200,7 +214,6 @@ if &diff
     set relativenumber!
     set number
 else
-    syntax on
     if has("gui_running")
         set lines=999 columns=120
     endif
@@ -208,13 +221,17 @@ else
     if has("autocmd")
         au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
     endif
+
+    set textwidth=120
+    let &colorcolumn="121"
+    highlight ColorColumn ctermbg=lightgray guibg=lightcyan
+
 endif
 
+
 " remove currently unused fugitive buffers:
 autocmd BufReadPost fugitive://* set bufhidden=delete
 
-autocmd GuiEnter * simalt ~x
-
 " reset terminal colors after vim leaves
 "if !has("gui_running")
 "    au VimLeave * !echo -ne "\033[0m"
@@ -224,20 +241,10 @@ autocmd GuiEnter * simalt ~x
 " wird.
 set t_ut=
 
-
-if has("gui_running")
-    if has('win32')
-        set guifont=Consolas:h10:cANSI:qDRAFT
-    else
-        set guifont=Monospace\ 12
-    endif
-endif
-
-
 if has ('win32') || has('win32unix')
     let g:vimwiki_list = [
                 \{
-                \   'path':'~/vimwiki', 
+                \   'path':'~/vimwiki',
                 \   'path_html':'~/vimwiki/html/',
                 \   'syntax': 'markdown',
                 \   'ext': '.md'
@@ -315,27 +322,27 @@ endfunction
 " remove #regions and whitspaces
 " use {var} instead of " + var + "
 noremap <Leader>fx ma:1,$ call FixCsharp()<cr>'a
-function! FixCsharp() range
+function! FixCsharp()
     let save_pos = getpos(".")
     " regions entfernen;
-    :silent! execute a:firstline.",".a:lastline.'g/^\s*#\(end\)\{0,1\}region/d'
-    " mehrere leerzeilen durch eine einzelne ersetzen:
-    :silent! execute a:firstline.",".a:lastline.'s/\s\+$//e'
-    :silent! execute a:firstline.",".a:lastline.'s/\n\{3,}/\r\r/e'
+    :silent! %g/^\s*#\(end\)\{0,1\}region/d
 
-    silent! execute a:firstline.",".a:lastline.'g/\.WriteException(/normal 0df,$^iLog.Exception(\eV='
-    silent! execute a:firstline.",".a:lastline.'g/\.WriteMessage(/normal 0f(ldf."ayiw0P0xlveu0iLog.\eelcf,(\eld0$^PV='
+    :silent! %g/\.WriteException(/normal 0df,$^iLog.Exception(\eV=
+    :silent! %g/\.WriteMessage(/normal 0f(ldf."ayiw0P0xlveu0iLog.\eelcf,(\eld0$^PV=
 
     " '+ varname +' durch '{varname}' ersetzen
-    silent! execute a:firstline.",".a:lastline.'s/"\s*+\s*\(.\{-\}\)\s*+\s*"/{\1}/g'
-    silent! execute a:firstline.",".a:lastline.'s/"\s*+\s*\(.\{-\}\)\s*+\s*$/{\1}" +/g'
-    silent! execute a:firstline.",".a:lastline.'s/"\s*+\s*\(.\{-\}\)\s*);/{\1}");/g'
-    "ersetze log...(rank, "
-    silent! execute a:firstline.",".a:lastline.'s/,\s*\("[^"]*{\)/, $\1/c'
+    :silent! %s/"\s*+\s*\(.\{-\}\)\s*+\s*"/{\1}/g
+    :silent! %s/"\s*+\s*\(.\{-\}\)\s*+\s*$/{\1}" +/g
+    :silent! %s/"\s*+\s*\(.\{-\}\)\s*);/{\1}");/g
+    "
     "ersetze 'Zeilenanfang "'
-    silent! execute a:firstline.",".a:lastline.'s/\(^\s*\)\("[^"]*{\)/\1$\2/c'
-    silent! execute a:firstline.",".a:lastline.'s/[^$]\(".*{\)/$\1/c'
-    noh
+    :silent! %s/\(^\s*\)\("[^"]*{\)/\1$\2/g
+    :silent! %s/[^$]\(".*{\)/$\1/g
+
+    " mehrere leerzeilen durch eine einzelne ersetzen:
+    :silent! %s/\s\+$//e
+    :silent! %s/\n\{3,}/\r\r/e
+    :noh
     call setpos('.', save_pos)
 endfunction
 
@@ -350,6 +357,7 @@ function! FixWhitespace()
     :silent! g/\/\/\(\*\|#\)*\s*$/d
     " remove excessive newlines
     :silent! %s/\n\n\n\+/\r\r/
+    :noh
 endfunction
 
 function! UndoCSharStringInterpolation()
@@ -357,13 +365,13 @@ function! UndoCSharStringInterpolation()
     silent! s/{\(.\{-}\)}/" + \1 + "/g
 endfunction
 
-
 """" ALE start """"
 inoremap <F4> <Esc>:ALEToggle<CR>
 nnoremap <F4> <Esc>:ALEToggle<CR>
 let g:ale_linters = {
             \   'cpp': ['gcc', 'cppcheck', 'clang'],
-            \} 
+            \   'perl': ['perl', 'perlcritic'],
+            \}
 let b:ale_warn_about_trailing_whitespace = 1
 let g:ale_sign_column_always = 1
 let g:ale_cpp_clang_options =
@@ -377,7 +385,7 @@ let g:ale_cpp_clang_options =
             \   -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g+
             \'
 
-let g:ale_cpp_gcc_options = 
+let g:ale_cpp_gcc_options =
             \  '-std=c++14 -Wall -pedantic -fPIC
             \   -I/usr/include/x86_64-linux-gnu/qt5
             \   -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport
@@ -398,9 +406,8 @@ if has("patch-7.4.354")
     set lbr
 endif
 
-hi CursorLineNr  term=underline  cterm=underline      ctermfg=White    ctermbg=darkBlue guibg=darkyellow
-hi clear Cursorline
-"hi CursorLine    gui=underline term=underline cterm=underline
+hi CursorLineNr  ctermbg=black guibg=black
+hi CursorLine    ctermbg=black guibg=black
 augroup CursorLine
   au!
   au VimEnter,WinEnter,BufWinEnter * setlocal cursorline
@@ -419,21 +426,6 @@ let g:acp_behaviorHtmlOmniLength = 0
 let g:acp_behaviorCssOmniPropertyLength = 1
 let g:acp_behaviorCssOmniValueLength = 0
 
-" auskommentiert, macht in screen das nix gut aussieht..
-"set termguicolors 
-set background=dark
-try
-    let g:gruvbox_contrast_dark = 'dark'
-    let g:gruvbox_italicize_comments = 0
-    colorscheme gruvbox
-catch /^Vim\%((\a\+)\)\=:E185/
-    "  wird evtl rest instlliert... E185 heißt nicht gefunden..
-endtry
-
-set textwidth=120
-let &colorcolumn="121"
-highlight ColorColumn ctermbg=lightgray guibg=lightcyan
-
 highlight ExtraWhitespace ctermfg=red guifg=red ctermbg=white guibg=DarkGrey
 
 " keine trailing whitespaces in hub log files anzeigen