2 let b:vim_conf_dir = $HOME.'/.vim'
4 let b:vim_conf_dir = $HOME.'\vimfiles'
9 if isdirectory( b:vim_conf_dir . '/tmpnvim/') == 0
10 call mkdir(b:vim_conf_dir.'/tmpnvim/', 'p', 0700)
13 if isdirectory( b:vim_conf_dir . '/tmp/') == 0
14 call mkdir(b:vim_conf_dir.'/tmp/', 'p', 0700)
18 let g:qs_highlight_on_keys = ['f', 'F', 't', 'T']
21 autocmd ColorScheme * highlight QuickScopePrimary guifg='#afff5f' gui=underline ctermfg=155 cterm=underline
22 autocmd ColorScheme * highlight QuickScopeSecondary guifg='#5fffff' gui=underline ctermfg=81 cterm=underline
27 if filereadable(b:vim_conf_dir . '/plugins.vundel.vim')
28 exec 'source ' . b:vim_conf_dir . '/plugins.vundel.vim'
31 " auskommentiert, macht in screen das nix gut aussieht..
35 let g:gruvbox_contrast_dark = 'hard'
36 let g:gruvbox_italicize_comments = 0
38 catch /^Vim\%((\a\+)\)\=:E185/
39 " wird evtl rest instlliert... E185 heißt nicht gefunden..
43 set backspace=indent,eol,start
69 " Tab-completion in command-line mode
73 set wildignore=*.pdf,*.fo,
86 " remove =, thus 'gf' works whit filepath asignemens like myvar=/path/tofile
89 let perl_include_pod = 1
92 autocmd FileType perl setlocal complete-=i
101 nnoremap <leader>- i•
105 nnoremap <C-k> <C-W>k
106 nnoremap <C-j> <C-W>j
107 nnoremap <C-h> <C-W>h
108 nnoremap <C-l> <C-W>l
110 nnoremap <Leader>i a'" << << "' <Esc>6hi
111 nnoremap <Leader>a a'{}' <Esc>2hi
112 nnoremap <Leader>A a'"+ +"' <Esc>4hi
113 autocmd FileType cpp nnoremap <Leader>a a'"<< <<"' <Esc>5hi
115 " see :h restore-position
116 nnoremap <Leader>= msgg=G`s
120 inoremap ts<tab> // TODOts: <Esc>=$A
121 inoremap obs<tab> //TODOObsolete: kann nach der Abspaltung von XXXX entfernt werden<Esc>=$0fXviw
123 inoremap no<tab> <Esc>0i <nodoc /><Esc>0i///<Esc>=$
124 inoremap td<tab> <Esc>0i//TODOts: doku<CR><summary> </summary><Esc>0i/// <Esc>kVj=$
126 autocmd InsertEnter * set timeoutlen=500
127 autocmd InsertLeave * set timeoutlen=1000
129 inoremap in<tab> <Esc>0i<inheritdoc /><Esc>0i///<Esc>V=
134 nnoremap <C-p> :bprev<CR>
135 nnoremap <C-n> :bnext<CR>
137 nnoremap <leader>e :tabedit $MYVIMRC<CR>
139 nnoremap ZZ :wqall<CR>
140 nnoremap <F6> :wa<CR>:make -j 8<CR><CR>
141 inoremap <F6> <esc>:wa<CR>:make -j 8<CR><CR>
143 nnoremap <F5> :wa\|!./%<CR>
144 inoremap <F5> <esc>:wa\|!./%<CR>
146 nnoremap <C-l> <C-W>l
148 " Copy paste to/from system clipboard
149 vnoremap <leader>c "*y
150 noremap <leader>v "*p
151 inoremap <leader>v <esc>"*p
152 vnoremap <leader>v "*p
154 "nnoremap <Leader>= mzgg=G`z<CR>
155 nnoremap <F2> :call FormatDocument()<CR>
157 cmap w!! w !sudo tee > /dev/null %
159 "move visually selected
161 nnoremap <A-j> :m .+1<CR>==
162 nnoremap <A-k> :m .-2<CR>==
163 inoremap <A-j> <Esc>:m .+1<CR>==gi
164 inoremap <A-k> <Esc>:m .-2<CR>==gi
165 vnoremap <A-j> :m '>+1<CR>gv=gv
166 vnoremap <A-k> :m '<-2<CR>gv=gv
168 " repeat last command on all selected:
169 vnoremap . :normal.<CR>
171 vnoremap <leader>tt :Tabular /^[^-+=]*\zs\S*=/l1l1<cr>
172 vnoremap <leader>t, :Tabular /,\zs/l1l1<cr>
173 vnoremap <leader>t<space> :Tabular /\s\+\zs/l1l0<cr>
174 vnoremap <leader>t: :Tabular /:\zs/l1l0<cr>
175 vnoremap <leader>t( :Tabular /(/l1l0<cr>
177 " append word under cursor with 'or' to current search pattern
178 nnoremap <Leader>s yiw/<C-R>/\\|<C-R>"<cr>
179 " append selection with 'or' to current search pattern
180 vnoremap <Leader>s y/<C-R>/\\|<C-R>"<cr>
182 cmap w!! w !sudo tee % >/dev/null
183 nnoremap <Leader>mh :wa<CR>:silent !mhsend -run reload code<CR>:redraw!<CR>
184 nnoremap <Leader>ll iprint_log("");<Esc>V=0f(la
187 nnoremap <Leader>r :source ~/vimfiles/vimrc<CR>
189 nnoremap <Leader>r :source ~/.vim/vimrc<CR>
192 filetype plugin indent on
196 " ack seems to have vanished from artfull, thus use silversearchger-ag
199 let g:ackprg = 'ag --vimgrep'
202 set list listchars=tab:→\ ,trail:·
204 hi Visual guifg=White guibg=Blue gui=bold
206 set diffopt+=vertical
208 set diffopt+=algorithm:patience
209 "jump to next diff and center line
210 noremap <leader>n ]cz.
211 noremap <leader>p [cz.
213 set guifont=DejaVu_Sans_Mono:h9:cANSI:qDRAFT
217 set diffopt+=vertical
219 set diffopt+=algorithm:patience
222 highlight DiffText term=reverse cterm=reverse ctermfg=214 ctermbg=234 gui=reverse guifg=lightgreen guibg=DarkGreen
225 autocmd GuiEnter * simalt ~x
226 set guifont=DejaVu_Sans_Mono:h8:cANSI:qDRAFT
228 " make all diff windows the same size
229 autocmd VimResized * wincmd =
230 autocmd VimEnter * 2wincmd w
231 autocmd VimEnter * syntax off
232 autocmd VimEnter * set guioptions+=b
236 if has("gui_running")
237 set lines=999 columns=120
239 " from /etc/vim/vimrc (restore last editing position)
241 au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
245 let &colorcolumn="121"
246 highlight ColorColumn ctermbg=lightgray guibg=lightcyan
251 " remove currently unused fugitive buffers:
252 autocmd BufReadPost fugitive://* set bufhidden=delete
254 " reset terminal colors after vim leaves
255 "if !has("gui_running")
256 " au VimLeave * !echo -ne "\033[0m"
259 " macht dass auch in screen auf dem server der vollstaendige hintergund gmalt
263 if has ('win32') || has('win32unix')
264 let g:vimwiki_list = [
266 \ 'path':'~/vimwiki',
267 \ 'path_html':'~/vimwiki/html/',
268 \ 'syntax': 'markdown',
273 let g:vimwiki_list = [
276 \ 'path_html':'~/p/wiki/html/',
277 \ 'syntax': 'markdown',
285 if isdirectory( b:vim_conf_dir . '/tmpnvim/backup') == 0
286 call mkdir(b:vim_conf_dir.'/tmpnvim/backup', 'p', 0700)
288 exec 'set backupdir='. b:vim_conf_dir.'/tmpnvim/backup//'
291 " delete old swap dirs and disable swap files
292 if isdirectory( b:vim_conf_dir . '/tmpnvim/swap') == 1
293 call delete(b:vim_conf_dir.'/tmpnvim/swap', 'rf')
297 " viminfo stores the the state of your previous editing session
299 set viminfo+=n~/vimfiles/tmpnvim/viminfo
301 set viminfo+=n~/.vim/tmpnvim/viminfo
304 " letzte suche beim öffnen einer Datei sofort wieder anzeigen
307 if exists("+undofile")
308 " undofile - This allows you to use undos after exiting and restarting
309 " This, like swap and backups, uses .vim-undo first, then ~/.vim/undo
310 " :help undo-persistence
311 " This is only present in 7.3+
312 if isdirectory( b:vim_conf_dir . '/tmpnvim/undo') == 0
313 call mkdir(b:vim_conf_dir.'/tmpnvim/undo', 'p', 0700)
315 exec 'set undodir='. b:vim_conf_dir.'/tmpnvim/undo'
320 if isdirectory( b:vim_conf_dir . '/tmp/backup') == 0
321 call mkdir(b:vim_conf_dir.'/tmp/backup', 'p', 0700)
323 exec 'set backupdir='. b:vim_conf_dir.'/tmp/backup//'
326 " delete old swap dirs and disable swap files
327 if isdirectory( b:vim_conf_dir . '/tmp/swap') == 1
328 call delete(b:vim_conf_dir.'/tmp/swap', 'rf')
332 " viminfo stores the the state of your previous editing session
334 set viminfo+=n~/vimfiles/tmp/viminfo
336 set viminfo+=n~/.vim/tmp/viminfo
339 " letzte suche beim öffnen einer Datei sofort wieder anzeigen
342 if exists("+undofile")
343 " undofile - This allows you to use undos after exiting and restarting
344 " This, like swap and backups, uses .vim-undo first, then ~/.vim/undo
345 " :help undo-persistence
346 " This is only present in 7.3+
347 if isdirectory( b:vim_conf_dir . '/tmp/undo') == 0
348 call mkdir(b:vim_conf_dir.'/tmp/undo', 'p', 0700)
350 exec 'set undodir='. b:vim_conf_dir.'/tmp/undo'
356 function! FormatDocument()
357 let save_pos = getpos(".")
359 call setpos('.', save_pos)
363 noremap <Leader>x :call XmlPretty()<cr>
365 function! XmlPretty()
366 let save_pos = getpos(".")
369 :silent! %s/></>\r</g
372 call setpos('.', save_pos)
375 " fix logger stuff to use the newer api call
376 " remove #regions and whitspaces
377 " use {var} instead of " + var + "
378 noremap <Leader>fx ma:1,$ call FixCsharp()<cr>'a
379 function! FixCsharp()
380 let save_pos = getpos(".")
382 :silent! %g/^\s*#\(end\)\{0,1\}region/d
384 :silent! %g/\.WriteException(/normal 0df,$^iLog.Exception(
\eV=
385 :silent! %g/\.WriteMessage(/normal 0f(ldf."ayiw0P0xlveu0iLog.
\eelcf,(
\eld0$^PV=
387 " '+ varname +' durch '{varname}' ersetzen
388 :silent! %s/"\s*+\s*\(.\{-\}\)\s*+\s*"/{\1}/g
389 :silent! %s/"\s*+\s*\(.\{-\}\)\s*+\s*$/{\1}" +/g
390 :silent! %s/"\s*+\s*\(.\{-\}\)\s*);/{\1}");/g
392 "ersetze 'Zeilenanfang "'
393 :silent! %s/\(^\s*\)\("[^"]*{\)/\1$\2/g
394 :silent! %s/[^$]\(".*{\)/$\1/g
396 " mehrere leerzeilen durch eine einzelne ersetzen:
398 :silent! %s/\n\{3,}/\r\r/e
400 call setpos('.', save_pos)
403 function! FixWhitespace()
404 " convert tabs to spaces
406 " remove trailing whitespace
408 :silent! g/\s*<!--\**-->\s*/d
410 " remov '//******' and '//#####'
411 :silent! g/\/\/\(\*\|#\)*\s*$/d
412 " remove excessive newlines
413 :silent! %s/\n\n\n\+/
\r\r/
417 function! UndoCSharStringInterpolation()
419 silent! s/{\(.\{-}\)}/" + \1 + "/g
423 inoremap <F4> <Esc>:ALEToggle<CR>
424 nnoremap <F4> <Esc>:ALEToggle<CR>
425 let g:ale_linters = {
426 \ 'cpp': ['gcc', 'cppcheck', 'clang'],
427 \ 'perl': ['perl', 'perlcritic'],
429 let b:ale_warn_about_trailing_whitespace = 1
430 let g:ale_sign_column_always = 1
431 let g:ale_cpp_clang_options =
432 \ '-std=c++14 -Wall -pedantic -fPIC
433 \ -I/usr/include/x86_64-linux-gnu/qt5
434 \ -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport
435 \ -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets
436 \ -I/usr/include/x86_64-linux-gnu/qt5/QtGui
437 \ -I/usr/include/x86_64-linux-gnu/qt5/QtCore
438 \ -I/usr/include/libdrm
439 \ -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g+
442 let g:ale_cpp_gcc_options =
443 \ '-std=c++14 -Wall -pedantic -fPIC
444 \ -I/usr/include/x86_64-linux-gnu/qt5
445 \ -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport
446 \ -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets
447 \ -I/usr/include/x86_64-linux-gnu/qt5/QtGui
448 \ -I/usr/include/x86_64-linux-gnu/qt5/QtCore
449 \ -I/usr/include/libdrm
450 \ -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g+
455 if has("patch-7.4.354")
456 " Indents word-wrapped lines as much as the 'parent' line
458 " Ensures word-wrap does not split words
463 hi CursorLineNr ctermbg=black guibg=black
464 hi CursorLine ctermbg=black guibg=black
467 au VimEnter,WinEnter,BufWinEnter * setlocal cursorline
468 au WinLeave * setlocal nocursorline
473 let g:acp_enableAtStartup = 1
474 let g:acp_behaviorPerlOmniLength = 0
475 let g:acp_behaviorPhpOmniLength = 0
476 let g:acp_completeoptPreview = 1
477 let g:acp_behaviorPythonOmniLength = 0
478 let g:acp_behaviorXmlOmniLength = 0
479 let g:acp_behaviorHtmlOmniLength = 0
480 let g:acp_behaviorCssOmniPropertyLength = 1
481 let g:acp_behaviorCssOmniValueLength = 0
483 highlight ExtraWhitespace ctermfg=red guifg=red ctermbg=white guibg=DarkGrey
485 " keine trailing whitespaces in hub log files anzeigen
486 match ExtraWhitespace /\s\+$/
488 let g:ale_python_flake8_options = "--max-line-length=120"
491 function! CopyFormatted(line1, line2)
492 let prev_number = &number
493 let prev_relativenumber = &relativenumber
494 let prev_background = &background
497 setlocal relativenumber!
498 setlocal background=light
499 " wenn ft manuel gesetzt war wird das von set background zurueckgesetzt, deswegen gleich wieder setzen
500 exe 'setlocal ft='.expand(prev_ft)
502 execute a:line1 . "," . a:line2 . "TOhtml"
504 !start /min powershell -noprofile "gcb | scb -as"
510 if (prev_relativenumber)
513 exe 'setlocal background='.expand(prev_background)
514 exe 'setlocal ft='.expand(prev_ft)
517 command! -range=% HtmlClip silent call CopyFormatted(<line1>,<line2>)
520 augroup logfilesgroup
522 au! BufRead,BufNewFile *.log setlocal nowrap |
523 \ setlocal textwidth=0 |
524 \ let &colorcolumn=""
527 set suffixes+=.mhp,.backup1,.backup2,.backup3
530 let g:firenvim_config = {
531 \ 'globalSettings': {
536 \ 'cmdline': 'neovim',
539 \ 'selector': 'textarea',
540 \ 'takeover': 'never',
544 let fc = g:firenvim_config['localSettings']