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..
36 let g:gruvbox_contrast_dark = 'hard'
37 let g:gruvbox_italicize_comments = 0
39 catch /^Vim\%((\a\+)\)\=:E185/
40 " wird evtl rest instlliert... E185 heißt nicht gefunden..
44 set backspace=indent,eol,start
70 " Tab-completion in command-line mode
74 set wildignore=*.pdf,*.fo,
87 " remove =, thus 'gf' works whit filepath asignemens like myvar=/path/tofile
90 let perl_include_pod = 1
93 autocmd FileType perl setlocal complete-=i
98 nnoremap <F5> :wa<CR>:!./%
103 nnoremap <leader>- i•
107 nnoremap <C-k> <C-W>k
108 nnoremap <C-j> <C-W>j
109 nnoremap <C-h> <C-W>h
110 nnoremap <C-l> <C-W>l
112 nnoremap <Leader>i a'" << << "' <Esc>6hi
113 nnoremap <Leader>a a'{}' <Esc>2hi
114 nnoremap <Leader>A a'"+ +"' <Esc>4hi
115 autocmd FileType cpp nnoremap <Leader>a a'"<< <<"' <Esc>5hi
117 " see :h restore-position
118 nnoremap <Leader>= msgg=G`s
122 inoremap ts<tab> // TODOts: <Esc>=$A
123 inoremap obs<tab> //TODOObsolete: kann nach der Abspaltung von XXXX entfernt werden<Esc>=$0fXviw
125 inoremap no<tab> <Esc>0i <nodoc /><Esc>0i///<Esc>=$
126 inoremap td<tab> <Esc>0i//TODOts: doku<CR><summary> </summary><Esc>0i/// <Esc>kVj=$
128 autocmd InsertEnter * set timeoutlen=500
129 autocmd InsertLeave * set timeoutlen=1000
131 inoremap in<tab> <Esc>0i<inheritdoc /><Esc>0i///<Esc>V=
136 nnoremap <C-p> :bprev<CR>
137 nnoremap <C-n> :bnext<CR>
139 nnoremap <leader>e :tabedit $MYVIMRC<CR>
141 nnoremap ZZ :wqall<CR>
142 nnoremap <F6> :wa<CR>:make -j 8<CR><CR>
143 inoremap <F6> <esc>:wa<CR>:make -j 8<CR><CR>
145 nnoremap <Leader>x :wa\|!./%<CR>
146 inoremap <Leader>x <esc>:wa\|!./%<CR>
148 nnoremap <C-l> <C-W>l
150 " Copy paste to/from system clipboard
151 vnoremap <leader>c "*y
152 noremap <leader>v "*p
153 inoremap <leader>v <esc>"*p
154 vnoremap <leader>v "*p
156 "nnoremap <Leader>= mzgg=G`z<CR>
157 nnoremap <F2> :call FormatDocument()<CR>
159 cmap w!! w !sudo tee > /dev/null %
161 "move lines up/down visually selected
162 inoremap <S-Up> <Esc>:m .-2<CR>==gi
163 nnoremap <S-Up> :m .-2<CR>==
164 vnoremap <S-Up> :m '<-2<CR>gv=gv
165 inoremap <S-Down> <Esc>:m .+1<CR>==gi
166 nnoremap <S-Down> :m .+1<CR>==
167 vnoremap <S-Down> :m '>+1<CR>gv=gv
169 nnoremap <S-Right> >>
170 vnoremap <S-Right> :><CR>gv
171 vnoremap <S-Left> :<<CR>gv
174 " repeat lS-ast command on all selected:
175 vnoremap . :normal.<CR>
177 vnoremap <leader>tt :Tabular /^[^-+=]*\zs\S*=/l1l1<cr>
178 vnoremap <leader>t, :Tabular /,\zs/l1l1<cr>
179 vnoremap <leader>t<space> :Tabular /\s\+\zs/l1l0<cr>
180 vnoremap <leader>t: :Tabular /:\zs/l1l0<cr>
181 vnoremap <leader>t( :Tabular /(/l1l0<cr>
183 " append word under cursor with 'or' to current search pattern
184 nnoremap <Leader>s yiw/<C-R>/\\|<C-R>"<cr>
185 " append selection with 'or' to current search pattern
186 vnoremap <Leader>s y/<C-R>/\\|<C-R>"<cr>
188 cmap w!! w !sudo tee % >/dev/null
189 nnoremap <Leader>mh :wa<CR>:silent !mhsend -run reload code<CR>:redraw!<CR>
190 nnoremap <Leader>ll iprint_log("");<Esc>V=0f(la
193 nnoremap <Leader>r :source ~/vimfiles/vimrc<CR>
195 nnoremap <Leader>r :source ~/.vim/vimrc<CR>
198 filetype plugin indent on
202 " ack seems to have vanished from artfull, thus use silversearchger-ag
205 let g:ackprg = 'ag --vimgrep'
208 set list listchars=tab:→\ ,trail:·
210 hi Visual guifg=White guibg=Blue gui=bold
212 set diffopt+=vertical
214 set diffopt+=algorithm:patience
215 "jump to next diff and center line
216 noremap <leader>n ]cz.
217 noremap <leader>p [cz.
219 set guifont=DejaVu_Sans_Mono:h9:cANSI:qDRAFT
223 set diffopt+=vertical
225 set diffopt+=algorithm:patience
228 highlight DiffText term=reverse cterm=reverse ctermfg=214 ctermbg=234 gui=reverse guifg=lightgreen guibg=DarkGreen
231 autocmd GuiEnter * simalt ~x
232 set guifont=DejaVu_Sans_Mono:h8:cANSI:qDRAFT
234 " make all diff windows the same size
235 autocmd VimResized * wincmd =
236 autocmd VimEnter * 2wincmd w
237 autocmd VimEnter * syntax off
238 autocmd VimEnter * set guioptions+=b
242 if has("gui_running")
243 set lines=999 columns=120
245 " from /etc/vim/vimrc (restore last editing position)
247 au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
255 " remove currently unused fugitive buffers:
256 autocmd BufReadPost fugitive://* set bufhidden=delete
258 " reset terminal colors after vim leaves
259 "if !has("gui_running")
260 " au VimLeave * !echo -ne "\033[0m"
263 " macht dass auch in screen auf dem server der vollstaendige hintergund gmalt
267 if has ('win32') || has('win32unix')
268 let g:vimwiki_list = [
270 \ 'path':'~/vimwiki',
271 \ 'path_html':'~/vimwiki/html/',
272 \ 'syntax': 'markdown',
277 let g:vimwiki_list = [
280 \ 'path_html':'~/p/wiki/html/',
281 \ 'syntax': 'markdown',
289 if isdirectory( b:vim_conf_dir . '/tmpnvim/backup') == 0
290 call mkdir(b:vim_conf_dir.'/tmpnvim/backup', 'p', 0700)
292 exec 'set backupdir='. b:vim_conf_dir.'/tmpnvim/backup//'
295 " delete old swap dirs and disable swap files
296 if isdirectory( b:vim_conf_dir . '/tmpnvim/swap') == 1
297 call delete(b:vim_conf_dir.'/tmpnvim/swap', 'rf')
301 " viminfo stores the the state of your previous editing session
303 set viminfo+=n~/vimfiles/tmpnvim/viminfo
305 set viminfo+=n~/.vim/tmpnvim/viminfo
308 " letzte suche beim öffnen einer Datei sofort wieder anzeigen
311 if exists("+undofile")
312 " undofile - This allows you to use undos after exiting and restarting
313 " This, like swap and backups, uses .vim-undo first, then ~/.vim/undo
314 " :help undo-persistence
315 " This is only present in 7.3+
316 if isdirectory( b:vim_conf_dir . '/tmpnvim/undo') == 0
317 call mkdir(b:vim_conf_dir.'/tmpnvim/undo', 'p', 0700)
319 exec 'set undodir='. b:vim_conf_dir.'/tmpnvim/undo'
324 if isdirectory( b:vim_conf_dir . '/tmp/backup') == 0
325 call mkdir(b:vim_conf_dir.'/tmp/backup', 'p', 0700)
327 exec 'set backupdir='. b:vim_conf_dir.'/tmp/backup//'
330 " delete old swap dirs and disable swap files
331 if isdirectory( b:vim_conf_dir . '/tmp/swap') == 1
332 call delete(b:vim_conf_dir.'/tmp/swap', 'rf')
336 " viminfo stores the the state of your previous editing session
338 set viminfo+=n~/vimfiles/tmp/viminfo
340 set viminfo+=n~/.vim/tmp/viminfo
343 " letzte suche beim öffnen einer Datei sofort wieder anzeigen
346 if exists("+undofile")
347 " undofile - This allows you to use undos after exiting and restarting
348 " This, like swap and backups, uses .vim-undo first, then ~/.vim/undo
349 " :help undo-persistence
350 " This is only present in 7.3+
351 if isdirectory( b:vim_conf_dir . '/tmp/undo') == 0
352 call mkdir(b:vim_conf_dir.'/tmp/undo', 'p', 0700)
354 exec 'set undodir='. b:vim_conf_dir.'/tmp/undo'
360 function! FormatDocument()
361 let save_pos = getpos(".")
363 call setpos('.', save_pos)
368 function! XmlPretty()
369 let save_pos = getpos(".")
372 :silent! %s/></>\r</g
375 call setpos('.', save_pos)
378 " fix logger stuff to use the newer api call
379 " remove #regions and whitspaces
380 " use {var} instead of " + var + "
381 command! -range FixCsharp call FixCsharp(<line1>, <line2>)
383 function! FixCsharp(l1,l2) range
384 let save_pos = getpos(".")
385 let r = a:l1. ','. a:l2
386 echo 'fixing range: '. r
388 :silent! exec r . 'g/^\s*#\(end\)\{0,1\}region/d'
389 :silent! exec r . 'g/\.WriteException(/normal 0df,$^iLog.Exception(
\eV='
390 :silent! exec r . 'g/\.WriteMessage(/normal 0f(ldf."ayiw0P0xlveu0iLog.
\eelcf,(
\eld0$^PV='
392 " '+ varname +' durch '{varname}' ersetzen
393 :silent! exec r . 's/"\s*+\s*\(.\{-\}\)\s*+\s*"/{\1}/g'
394 :silent! exec r . 's/"\s*+\s*\(.\{-\}\)\s*+\s*$/{\1}" +/g'
395 :silent! exec r . 's/"\s*+\s*\(.\{-\}\)\s*);/{\1}");/g'
397 "ersetze 'Zeilenanfang "'
398 :silent! exec r . 's/\(^\s*\)\("[^"]*{\)/\1$\2/g'
399 :silent! exec r . 's/[^$]\(".*{\)/ $\1/g'
401 " mehrere leerzeilen durch eine einzelne ersetzen:
402 :silent! exec r . 's/\s\+$//e'
403 :silent! exec r . 's/\n\{3,}/\r\r/e'
405 call setpos('.', save_pos)
408 function! FixWhitespace()
409 " convert tabs to spaces
411 " remove trailing whitespace
413 :silent! g/\s*<!--\**-->\s*/d
415 " remov '//******' and '//#####'
416 :silent! g/\/\/\(\*\|#\)*\s*$/d
417 " remove excessive newlines
418 :silent! %s/\n\n\n\+/
\r\r/
422 function! UndoCSharStringInterpolation()
424 silent! s/{\(.\{-}\)}/" + \1 + "/g
427 let g:ale_linters = {
428 \ 'cpp': ['gcc', 'cppcheck', 'clang'],
429 \ 'perl': ['perl', 'perlcritic'],
431 let b:ale_warn_about_trailing_whitespace = 1
432 let g:ale_sign_column_always = 1
433 let g:ale_cpp_clang_options =
434 \ '-std=c++14 -Wall -pedantic -fPIC
435 \ -I/usr/include/x86_64-linux-gnu/qt5
436 \ -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport
437 \ -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets
438 \ -I/usr/include/x86_64-linux-gnu/qt5/QtGui
439 \ -I/usr/include/x86_64-linux-gnu/qt5/QtCore
440 \ -I/usr/include/libdrm
441 \ -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g+
444 let g:ale_cpp_gcc_options =
445 \ '-std=c++14 -Wall -pedantic -fPIC
446 \ -I/usr/include/x86_64-linux-gnu/qt5
447 \ -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport
448 \ -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets
449 \ -I/usr/include/x86_64-linux-gnu/qt5/QtGui
450 \ -I/usr/include/x86_64-linux-gnu/qt5/QtCore
451 \ -I/usr/include/libdrm
452 \ -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g+
457 if has("patch-7.4.354")
458 " Indents word-wrapped lines as much as the 'parent' line
460 " Ensures word-wrap does not split words
465 hi CursorLineNr ctermbg=black guibg=black
466 hi CursorLine ctermbg=black guibg=black
469 au VimEnter,WinEnter,BufWinEnter * setlocal cursorline
470 au WinLeave * setlocal nocursorline
475 let g:acp_enableAtStartup = 1
476 let g:acp_behaviorPerlOmniLength = 0
477 let g:acp_behaviorPhpOmniLength = 0
478 let g:acp_completeoptPreview = 1
479 let g:acp_behaviorPythonOmniLength = 0
480 let g:acp_behaviorXmlOmniLength = 0
481 let g:acp_behaviorHtmlOmniLength = 0
482 let g:acp_behaviorCssOmniPropertyLength = 1
483 let g:acp_behaviorCssOmniValueLength = 0
485 highlight ExtraWhitespace ctermfg=red guifg=red ctermbg=white guibg=DarkGrey
487 " keine trailing whitespaces in hub log files anzeigen
488 match ExtraWhitespace /\s\+$/
490 let g:ale_python_flake8_options = "--max-line-length=120"
493 function! CopyFormatted(line1, line2)
494 let prev_number = &number
495 let prev_relativenumber = &relativenumber
496 let prev_background = &background
499 setlocal relativenumber!
500 setlocal background=light
501 " wenn ft manuel gesetzt war wird das von set background zurueckgesetzt, deswegen gleich wieder setzen
502 exe 'setlocal ft='.expand(prev_ft)
504 execute a:line1 . "," . a:line2 . "TOhtml"
506 !start /min powershell -noprofile "gcb | scb -as"
512 if (prev_relativenumber)
515 exe 'setlocal background='.expand(prev_background)
516 exe 'setlocal ft='.expand(prev_ft)
519 command! -range=% HtmlClip silent call CopyFormatted(<line1>,<line2>)
522 augroup logfilesgroup
524 au! BufRead,BufNewFile *.log setlocal nowrap |
525 \ setlocal textwidth=0 |
526 \ let &colorcolumn=""
529 set suffixes+=.mhp,.backup1,.backup2,.backup3
532 let g:firenvim_config = {
533 \ 'globalSettings': {
538 \ 'cmdline': 'neovim',
541 \ 'selector': 'textarea',
542 \ 'takeover': 'never',
546 let fc = g:firenvim_config['localSettings']
550 let g:lsp_diagnostics_echo_cursor = 1
551 " Register ccls C++ lanuage server.
552 if executable('ccls')
553 au User lsp_setup call lsp#register_server({
555 \ 'cmd': {server_info->['ccls']},
556 \ 'root_uri': {server_info->lsp#utils#path_to_uri(
557 \ lsp#utils#find_nearest_parent_file_directory(
558 \ lsp#utils#get_buffer_path(),
559 \ ['compile_commands.json']
561 \ 'initialization_options': {
562 \ 'cache': {'directory': expand('~/.cache/ccls') },
564 \ 'allowlist': ['ino', 'c', 'cpp', 'objc', 'objcpp', 'cc'],
568 if executable('typescript-language-server')
569 au User lsp_setup call lsp#register_server({
570 \ 'name': 'javascript support using typescript-language-server',
571 \ 'cmd': { server_info->[&shell, &shellcmdflag, 'typescript-language-server --stdio']},
572 \ 'root_uri': { server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_directory(lsp#utils#get_buffer_path(), '.git/..'))},
573 \ 'whitelist': ['javascript', 'javascript.jsx', 'javascriptreact']
578 "" if executable('pls')
579 "" au User lsp_setup call lsp#register_server({
581 "" \ 'cmd': {server_info->['pls']},
582 "" \ 'settings': { 'perl': {
583 "" \ 'cwd': getcwd(),
584 "" \ 'perlcritic': { 'enabled': 'true' },
585 "" \ 'syntax': { 'enabled': 'true' },
587 "" \ 'allowlist': ['perl'],
591 function! s:on_lsp_buffer_enabled() abort
592 setlocal omnifunc=lsp#complete
593 setlocal signcolumn=yes
594 nmap <buffer> gd <plug>(lsp-definition)
595 nmap <buffer> gs <plug>(lsp-document-symbol-search)
596 nmap <buffer> gS <plug>(lsp-workspace-symbol-search)
597 nmap <buffer> gr <plug>(lsp-references)
598 nmap <buffer> gi <plug>(lsp-implementation)
599 nmap <buffer> gt <plug>(lsp-type-definition)
600 nmap <buffer> <leader>rn <plug>(lsp-rename)
601 nmap <buffer> <f2> <plug>(lsp-rename)
602 nmap <buffer> [g <plug>(lsp-previous-diagnostic)
603 nmap <buffer> ]g <plug>(lsp-next-diagnostic)
604 nmap <buffer> K <plug>(lsp-hover)
609 autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
612 let g:lsp_diagnostics_highlights_enabled = 1
614 highlight lspReference cterm=underline guifg=red guibg=green
617 " asyncomplete tabcompletion
618 inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
619 inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
620 inoremap <expr> <cr> pumvisible() ? asyncomplete#close_popup() : "\<cr>"
623 inoremap <F4> :Explore<CR>
624 nnoremap <F4> <Esc>:Explore<CR>