"set vim config dir let b:vim_conf_dir = $HOME.'/.vim' if has("win32") let b:vim_conf_dir = $HOME.'\vimfiles' endif set nocompatible if has('nvim') if isdirectory( b:vim_conf_dir . '/tmpnvim/') == 0 call mkdir(b:vim_conf_dir.'/tmpnvim/', 'p', 0700) endif else if isdirectory( b:vim_conf_dir . '/tmp/') == 0 call mkdir(b:vim_conf_dir.'/tmp/', 'p', 0700) endif endif let g:qs_highlight_on_keys = ['f', 'F', 't', 'T'] augroup qs_colors autocmd! autocmd ColorScheme * highlight QuickScopePrimary guifg='#afff5f' gui=underline ctermfg=155 cterm=underline autocmd ColorScheme * highlight QuickScopeSecondary guifg='#5fffff' gui=underline ctermfg=81 cterm=underline augroup END "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 set t_Co=256 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 set backspace=indent,eol,start set relativenumber set number set lazyredraw set expandtab set tabstop=4 set softtabstop=4 set shiftwidth=4 set pastetoggle= set encoding=utf-8 set modeline set history=50 set noerrorbells set visualbell t_vb= set hidden set nojoinspaces set nrformats= if ! has ('nvim') set ttymouse=xterm2 endif set mouse=a " Tab-completion in command-line mode set path+=** set wildmode=full set wildmenu set wildignore=*.pdf,*.fo, set title " Appearance set ruler set showmode set showcmd set laststatus=2 set hlsearch set incsearch set ignorecase set smartcase " remove =, thus 'gf' works whit filepath asignemens like myvar=/path/tofile set isfname-== let perl_include_pod = 1 augroup PerlSettings autocmd! autocmd FileType perl setlocal complete-=i augroup END let mapleader = "," nnoremap :wa:!./% nnoremap ]s nnoremap [s nnoremap Z Y nnoremap - i• inoremap - • " Window switching nnoremap k nnoremap j nnoremap h nnoremap l nnoremap i a'" << << "' 6hi nnoremap a a'{}' 2hi nnoremap A a'"+ +"' 4hi autocmd FileType cpp nnoremap a a'"<< <<"' 5hi " see :h restore-position nnoremap = msgg=G`s inoremap kj inoremap jk inoremap ts // TODOts: =$A inoremap obs //TODOObsolete: kann nach der Abspaltung von XXXX entfernt werden=$0fXviw inoremap no 0i 0i///=$ inoremap td 0i//TODOts: doku 0i/// kVj=$ autocmd InsertEnter * set timeoutlen=500 autocmd InsertLeave * set timeoutlen=1000 inoremap in 0i0i///V= " do not use ex mode map Q nnoremap :bprev nnoremap :bnext nnoremap e :tabedit $MYVIMRC nnoremap ZZ :wqall nnoremap :wa:make -j 8 inoremap :wa:make -j 8 nnoremap x :wa\|!./% inoremap x :wa\|!./% nnoremap l " Copy paste to/from system clipboard vnoremap c "*y noremap v "*p inoremap v "*p vnoremap v "*p "nnoremap = mzgg=G`z nnoremap :call FormatDocument() " write using sudo. cmap w!! w !sudo tee > /dev/null % "move lines up/down visually selected inoremap :m .-2==gi nnoremap :m .-2== vnoremap :m '<-2gv=gv inoremap :m .+1==gi nnoremap :m .+1== vnoremap :m '>+1gv=gv nnoremap >> vnoremap :>gv vnoremap :<gv nnoremap << " repeat lS-ast command on all selected: vnoremap . :normal. vnoremap tt :Tabular /^[^-+=]*\zs\S*=/l1l1 vnoremap t, :Tabular /,\zs/l1l1 vnoremap t :Tabular /\s\+\zs/l1l0 vnoremap t: :Tabular /:\zs/l1l0 vnoremap t( :Tabular /(/l1l0 " " append word under cursor with 'or' to current search pattern nnoremap s yiw//\\|" " append selection with 'or' to current search pattern vnoremap s y//\\|" cmap w!! w !sudo tee % >/dev/null nnoremap mh :wa:silent !mhsend -run reload code:redraw! nnoremap ll iprint_log("");V=0f(la if has('win32') nnoremap r :source ~/vimfiles/vimrc else nnoremap r :source ~/.vim/vimrc endif filetype plugin indent on syntax enable set autoindent " ack seems to have vanished from artfull, thus use silversearchger-ag " for ack.vim: if executable('ag') let g:ackprg = 'ag --vimgrep' endif set list listchars=tab:→\ ,trail:· hi Visual guifg=White guibg=Blue gui=bold set diffopt+=vertical "set diffopt+=iwhite set diffopt+=algorithm:patience "jump to next diff and center line noremap n ]cz. noremap p [cz. if has ('win32') set guifont=DejaVu_Sans_Mono:h9: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: 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 autocmd VimEnter * syntax off autocmd VimEnter * set guioptions+=b set relativenumber! set number else if has("gui_running") set lines=999 columns=120 endif " from /etc/vim/vimrc (restore last editing position) if has("autocmd") au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif endif set textwidth=120 endif " remove currently unused fugitive buffers: autocmd BufReadPost fugitive://* set bufhidden=delete " reset terminal colors after vim leaves "if !has("gui_running") " au VimLeave * !echo -ne "\033[0m" "endif " macht dass auch in screen auf dem server der vollstaendige hintergund gmalt " wird. set t_ut= if has ('win32') || has('win32unix') let g:vimwiki_list = [ \{ \ 'path':'~/vimwiki', \ 'path_html':'~/vimwiki/html/', \ 'syntax': 'markdown', \ 'ext': '.md' \ } \ ] else let g:vimwiki_list = [ \ { \ 'path':'~/p/wiki', \ 'path_html':'~/p/wiki/html/', \ 'syntax': 'markdown', \ 'ext': '.md' \ } \ ] endif if has('nvim') "" tmp files: if isdirectory( b:vim_conf_dir . '/tmpnvim/backup') == 0 call mkdir(b:vim_conf_dir.'/tmpnvim/backup', 'p', 0700) endif exec 'set backupdir='. b:vim_conf_dir.'/tmpnvim/backup//' set backup " delete old swap dirs and disable swap files if isdirectory( b:vim_conf_dir . '/tmpnvim/swap') == 1 call delete(b:vim_conf_dir.'/tmpnvim/swap', 'rf') endif set noswapfile " viminfo stores the the state of your previous editing session if has('win32') set viminfo+=n~/vimfiles/tmpnvim/viminfo else set viminfo+=n~/.vim/tmpnvim/viminfo endif " letzte suche beim öffnen einer Datei sofort wieder anzeigen set viminfo-=h if exists("+undofile") " undofile - This allows you to use undos after exiting and restarting " This, like swap and backups, uses .vim-undo first, then ~/.vim/undo " :help undo-persistence " This is only present in 7.3+ if isdirectory( b:vim_conf_dir . '/tmpnvim/undo') == 0 call mkdir(b:vim_conf_dir.'/tmpnvim/undo', 'p', 0700) endif exec 'set undodir='. b:vim_conf_dir.'/tmpnvim/undo' set undofile endif else "" tmp files: if isdirectory( b:vim_conf_dir . '/tmp/backup') == 0 call mkdir(b:vim_conf_dir.'/tmp/backup', 'p', 0700) endif exec 'set backupdir='. b:vim_conf_dir.'/tmp/backup//' set backup " delete old swap dirs and disable swap files if isdirectory( b:vim_conf_dir . '/tmp/swap') == 1 call delete(b:vim_conf_dir.'/tmp/swap', 'rf') endif set noswapfile " viminfo stores the the state of your previous editing session if has('win32') set viminfo+=n~/vimfiles/tmp/viminfo else set viminfo+=n~/.vim/tmp/viminfo endif " letzte suche beim öffnen einer Datei sofort wieder anzeigen set viminfo-=h if exists("+undofile") " undofile - This allows you to use undos after exiting and restarting " This, like swap and backups, uses .vim-undo first, then ~/.vim/undo " :help undo-persistence " This is only present in 7.3+ if isdirectory( b:vim_conf_dir . '/tmp/undo') == 0 call mkdir(b:vim_conf_dir.'/tmp/undo', 'p', 0700) endif exec 'set undodir='. b:vim_conf_dir.'/tmp/undo' set undofile endif endif " format document function! FormatDocument() let save_pos = getpos(".") normal gg=G call setpos('.', save_pos) echom "formatiert.." endfunction " reformat xml stuff function! XmlPretty() let save_pos = getpos(".") :silent! %s/<//g :silent! %s/>\r, ) function! FixCsharp(l1,l2) range let save_pos = getpos(".") let r = a:l1. ','. a:l2 echo 'fixing range: '. r " regions entfernen; :silent! exec r . 'g/^\s*#\(end\)\{0,1\}region/d' :silent! exec r . 'g/\.WriteException(/normal 0df,$^iLog.Exception(V=' :silent! exec r . 'g/\.WriteMessage(/normal 0f(ldf."ayiw0P0xlveu0iLog.elcf,(ld0$^PV=' " '+ varname +' durch '{varname}' ersetzen :silent! exec r . 's/"\s*+\s*\(.\{-\}\)\s*+\s*"/{\1}/g' :silent! exec r . 's/"\s*+\s*\(.\{-\}\)\s*+\s*$/{\1}" +/g' :silent! exec r . 's/"\s*+\s*\(.\{-\}\)\s*);/{\1}");/g' " "ersetze 'Zeilenanfang "' :silent! exec r . 's/\(^\s*\)\("[^"]*{\)/\1$\2/g' :silent! exec r . 's/[^$]\(".*{\)/ $\1/g' " mehrere leerzeilen durch eine einzelne ersetzen: :silent! exec r . 's/\s\+$//e' :silent! exec r . 's/\n\{3,}/\r\r/e' :noh call setpos('.', save_pos) endfunction function! FixWhitespace() " convert tabs to spaces :retab " remove trailing whitespace :silent! %s/\s\+$//e :silent! g/\s*\s*/d " remov '//******' and '//#####' :silent! g/\/\/\(\*\|#\)*\s*$/d " remove excessive newlines :silent! %s/\n\n\n\+/ / :noh endfunction function! UndoCSharStringInterpolation() silent! s/\$"/"/g silent! s/{\(.\{-}\)}/" + \1 + "/g endfunction 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 = \ '-std=c++14 -Wall -pedantic -fPIC \ -I/usr/include/x86_64-linux-gnu/qt5 \ -I/usr/include/x86_64-linux-gnu/qt5/QtPrintSupport \ -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets \ -I/usr/include/x86_64-linux-gnu/qt5/QtGui \ -I/usr/include/x86_64-linux-gnu/qt5/QtCore \ -I/usr/include/libdrm \ -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g+ \' 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 \ -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets \ -I/usr/include/x86_64-linux-gnu/qt5/QtGui \ -I/usr/include/x86_64-linux-gnu/qt5/QtCore \ -I/usr/include/libdrm \ -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g+ \' """" ALE end """" if has("patch-7.4.354") " Indents word-wrapped lines as much as the 'parent' line set breakindent " Ensures word-wrap does not split words set formatoptions=l set lbr endif hi CursorLineNr ctermbg=black guibg=black hi CursorLine ctermbg=black guibg=black augroup CursorLine au! au VimEnter,WinEnter,BufWinEnter * setlocal cursorline au WinLeave * setlocal nocursorline augroup END packadd! matchit let g:acp_enableAtStartup = 1 let g:acp_behaviorPerlOmniLength = 0 let g:acp_behaviorPhpOmniLength = 0 let g:acp_completeoptPreview = 1 let g:acp_behaviorPythonOmniLength = 0 let g:acp_behaviorXmlOmniLength = 0 let g:acp_behaviorHtmlOmniLength = 0 let g:acp_behaviorCssOmniPropertyLength = 1 let g:acp_behaviorCssOmniValueLength = 0 highlight ExtraWhitespace ctermfg=red guifg=red ctermbg=white guibg=DarkGrey " keine trailing whitespaces in hub log files anzeigen match ExtraWhitespace /\s\+$/ let g:ale_python_flake8_options = "--max-line-length=120" if has("win32") function! CopyFormatted(line1, line2) let prev_number = &number let prev_relativenumber = &relativenumber let prev_background = &background let prev_ft = &ft setlocal number! setlocal relativenumber! setlocal background=light " wenn ft manuel gesetzt war wird das von set background zurueckgesetzt, deswegen gleich wieder setzen exe 'setlocal ft='.expand(prev_ft) execute a:line1 . "," . a:line2 . "TOhtml" %yank * !start /min powershell -noprofile "gcb | scb -as" bwipeout! if (prev_number) set number endif if (prev_relativenumber) set relativenumber endif exe 'setlocal background='.expand(prev_background) exe 'setlocal ft='.expand(prev_ft) endfunction command! -range=% HtmlClip silent call CopyFormatted(,) endif augroup logfilesgroup autocmd! au! BufRead,BufNewFile *.log setlocal nowrap | \ setlocal textwidth=0 | \ let &colorcolumn="" augroup END set suffixes+=.mhp,.backup1,.backup2,.backup3 " firenvim config let g:firenvim_config = { \ 'globalSettings': { \ 'alt': 'all', \ }, \ 'localSettings': { \ '.*': { \ 'cmdline': 'neovim', \ 'content': 'text', \ 'priority': 0, \ 'selector': 'textarea', \ 'takeover': 'never', \ }, \ } \ } let fc = g:firenvim_config['localSettings'] " lsp let g:lsp_diagnostics_echo_cursor = 1 " Register ccls C++ lanuage server. if executable('ccls') au User lsp_setup call lsp#register_server({ \ 'name': 'ccls', \ 'cmd': {server_info->['ccls']}, \ 'root_uri': {server_info->lsp#utils#path_to_uri( \ lsp#utils#find_nearest_parent_file_directory( \ lsp#utils#get_buffer_path(), \ ['compile_commands.json'] \ ))}, \ 'initialization_options': { \ 'cache': {'directory': expand('~/.cache/ccls') }, \}, \ 'allowlist': ['ino', 'c', 'cpp', 'objc', 'objcpp', 'cc'], \ }) endif if executable('typescript-language-server') au User lsp_setup call lsp#register_server({ \ 'name': 'javascript support using typescript-language-server', \ 'cmd': { server_info->[&shell, &shellcmdflag, 'typescript-language-server --stdio']}, \ 'root_uri': { server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_directory(lsp#utils#get_buffer_path(), '.git/..'))}, \ 'whitelist': ['javascript', 'javascript.jsx', 'javascriptreact'] \ }) endif "" if executable('pls') "" au User lsp_setup call lsp#register_server({ "" \ 'name': 'pls', "" \ 'cmd': {server_info->['pls']}, "" \ 'settings': { 'perl': { "" \ 'cwd': getcwd(), "" \ 'perlcritic': { 'enabled': 'true' }, "" \ 'syntax': { 'enabled': 'true' }, "" \ } }, "" \ 'allowlist': ['perl'], "" \ }) "" endif function! s:on_lsp_buffer_enabled() abort setlocal omnifunc=lsp#complete setlocal signcolumn=yes nmap gd (lsp-definition) nmap gs (lsp-document-symbol-search) nmap gS (lsp-workspace-symbol-search) nmap gr (lsp-references) nmap gi (lsp-implementation) nmap gt (lsp-type-definition) nmap rn (lsp-rename) nmap (lsp-rename) nmap [g (lsp-previous-diagnostic) nmap ]g (lsp-next-diagnostic) nmap K (lsp-hover) endfunction augroup lsp_install au! autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled() augroup END let g:lsp_diagnostics_highlights_enabled = 1 highlight lspReference cterm=underline guifg=red guibg=green " asyncomplete tabcompletion inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? "\" : "\" inoremap pumvisible() ? asyncomplete#close_popup() : "\" " netrw inoremap :Explore nnoremap :Explore