From eec48ff71881d8757b79dcd95aac9dac4d71bf72 Mon Sep 17 00:00:00 2001 From: Max Christian Pohle Date: Sun, 12 May 2024 21:01:00 +0200 Subject: tidied this repo up and uploaded my new nvim from scratch config --- vimrc-common | 379 ----------------------------------------------------------- 1 file changed, 379 deletions(-) delete mode 100644 vimrc-common (limited to 'vimrc-common') diff --git a/vimrc-common b/vimrc-common deleted file mode 100644 index dc48045..0000000 --- a/vimrc-common +++ /dev/null @@ -1,379 +0,0 @@ -"======================================================================================================================= -" GENERAL -"======================================================================================================================= - -filetype on -filetype plugin on -filetype indent on - -syntax on | " enable syntax highlighting -syntax sync minlines=60 | " how many preceding lines will be parsed? (high performance impact) - -set secure | " to ensure, that modelines do not contain executable code -set noexrc | " exrc was nice, but has too many security problems. Now using editorconfig instead (see plugins) -set modeline | " set variables specific to a file, like indentation by adding a comment (TODO: should probably be replaced by editorconfig) -set virtualedit=all | " virtual edit should be default behaviour, because I don't see any reason against -set nonumber norelativenumber | " do not show numbers by default, because that causes a performance loss, instead activate them on a file type basis -set ignorecase smartcase | " search with ignore case by default, but use case sensitive search when one capital char is contained and highlight while typing (even though its slower) -set hlsearch incsearch | " highlight pattern while entering it (performance wise this isn't that good) - - -"======================================================================================================================= -" BASIC CODE STYLE -"======================================================================================================================= -" set cindent cinoptions+=(0 | " indents at the level of parentheses -- if desired -set expandtab | " replace tabs with spaces -set textwidth=0 | " should be set file type specific, colorcolumns is there to assist anyways -set tabstop=4 -set shiftwidth=4 -set softtabstop=4 - - -" ====================================================================================================================== -" SETTINGS: -" ====================================================================================================================== -set breakindent | " Every wrapped line will continue visually indented -set clipboard=unnamedplus | " makes copy and paste work (autoselectplus might work as well) -set concealcursor=nc | " limits the display of concealed text to normal and command mode -set conceallevel=2 | " replace escaped chars by their UTF-8 representation (useful for LaTeX) -set confirm | " asks 'do you want to save?' -set cpoptions+=P | " makes :w filename set the current buffer to filename -set hidden | " allows switching buffers even if the current buffer contains changes (displays +) -set linebreak | " wrap long lines at char 'breakat', not inside words -set mousemodel=popup | " only in gvim: right click opens a pop-up-menu -set mouse=n | " allow mouse in normal mode only, so one can use the terminals c&p feature in insert mode -set noautochdir | " When on, Vim will change the current working directory -set nostartofline | " when scrolling: do not move the cursor to column 1 -set nowrap | " but do not (by default) wrap long lines around -set nrformats+=alpha | " allows CTRL-A & CTRL-X to increment and decrement letters, not just numbers - -if has('nvim') " Neovim? - set inccommand=nosplit | " preview substitute and such things in real time -endif - -if exists("g:neovide") - set guifont=monospace:h11:b - let g:neovide_cursor_animation_length=0 - let g:neovide_scroll_animation_length = 0.5 - let g:neovide_cursor_trail_size=0.8 - let g:neovide_cursor_vfx_mode = "" - let g:neovide_transparency = 0.9 - let g:neovide_floating_blur_amount_x = 4.0 - let g:neovide_floating_blur_amount_y = 4.0 - let g:neovide_background_color = '#383a62' - let g:neovide_scale_factor = 1.0 -endif - -set pumheight=8 | " Determines the maximum number of items to show in the pop-up menu for -set scrolljump=4 | " how many lines get scrolled into view when cursor reaches the screens edge -set scrolloff=4 | " keeps cursor centered -set shiftround | " indent/un-indent snaps to multiple of shiftwidths -set writedelay=0 - -" display and performance -set lazyredraw | " disables redraw during macro execution (improves performance, but causes problems with solid backgrounds) -set cmdheight=2 | " sets the command line's height -set signcolumn=yes | " auto=auto hide, yes=always, no=never show the column with error indicators -set nocursorcolumn | " turn visual cursor column off (improves performance) -set updatetime=80 | " updates the screen more often -set redrawtime=1500 | " Timeout in milliseconds for redrawing the screen (switches syntax off when ssh too slow) / CTRL+L to retry -set notimeout | " improves performance but is known to cause problems on slow terminals -set ttimeout ttimeoutlen=150 | " set Esc key timeout in ms- -set showcmd | " essential: show keys of combined commands in the lower right corner (BUT SLOW, makes cursor flickering) -set showtabline=2 | " 0: never, 1: only if there are at least two tabs, 2:always -set shortmess+=I | " don't give the intro message when starting Vim |:intro|. -set wildmenu | " use a menu in the command line -set wildmode=longest:full | " do not preselect any entry and show all possible - -" code completion -" set dictionary=/usr/share/dict/cracklib-small -set isfname-== | " remove = as char in filenames, because most FSs do not support it -set complete+=d | " scan current and included files for defined name or macro -set complete+=i | " scan current and included files for completions -set complete+=k | " make default completer respect the dictionary -set complete-=u | " scan current and included files -set complete+=i | " scan current and included files -set complete+=d | " scan current and included files for defined name or macro -" set complete=d | " scan current and included files for defined name or macro -set completeopt+=noinsert | " Do not insert any text for a match until the user selects one -set completeopt+=noselect | " Do not select a completion from the menu, let the user do that -set tagcase=match | " tagcase match, because we mostly use ^] to jump around and that variant respects the upper/lower case [followscs, followic, match, ignore] -set tags+=../tags - -" code folding... -set nofoldenable | " disable folding, because we have zi to toggle foldenable :) -set foldclose=all | " automatically fold, when the cursor leaves the folded area -set foldcolumn=0 | " I think I don't need this second indicator -" set numberwidth=5 -" set foldmethod=syntax | " foldlevel: syntax, indent, manual / foldmethod=syntax makes Vim incredible slow -set foldnestmax=1 | " top level folding only -set foldopen=block,hor,search | " when do we unfold? -" set foldtext=printf('%*s%.*S',indent(v:foldstart),'',&textwidth-indent(v:foldstart),substitute(substitute(join(getline(v:foldstart,v:foldend),'\ '),'[[:space:]*/]\\+','\ ','g'),'^[[:space:]*]','','g')) -set foldtext=repeat('\ ',indent(v:foldstart)-1).join(getline(v:foldstart,v:foldend))[:winwidth(0)]->substitute('[[:space:]]\\+','\ ','g') - -" works ... -" set foldexpr=match(synIDattr(synID(v:lnum,indent(v:lnum)+1,0),'name'),'Comment')>-1 -set foldexpr=!empty(filter(synstack(v:lnum,indent(v:lnum)+1),{_,val->match(synIDattr(val,'name'),'Comment')>-1})) - -" vim window behaviour -set splitbelow | " open new windows below the current one (i find that more intuitive) -set splitright | " this also works for me and makes better use of the scren space I think -set winminwidth=0 | " (and all other windows, so TODO: watch out) -set winwidth=30 | " keep NERDTreeWindow at least this size - -" vim session handling and restore behaviour -set viminfo+=% | " restore buffer list -set sessionoptions= -set sessionoptions+=buffers -set sessionoptions+=curdir -set sessionoptions+=folds -set sessionoptions+=resize -set sessionoptions+=slash -set sessionoptions+=tabpages -set sessionoptions+=unix -set sessionoptions+=winpos -set sessionoptions+=winsize - -" set nocindent smartindent | " use smart indent rather then cindent -set noautoindent -set nosmartindent - -set noshiftround | " indent/un-indent sna=ps to multiple of shiftwidths -set noequalalways | " do not evenly size windows when opening new or closing old -set nocursorline | " turn visual cursor line off (improves performance) - - -"======================================================================================================================= -" PATH -- where to search for includes (e.g. `gf` or `:find`) -"======================================================================================================================= -set path+=**4 | " allow recursive searches for files (limit depth by 4) -if executable("uname") " does not work under Windows - let &path = &path.",/usr/lib/modules/".substitute(system('uname -r'), "\n", "", "")."/build/include" -endif - - -"======================================================================================================================= -" SPELL_CHECKING: -"======================================================================================================================= -let g:spellfile_URL = 'http://ftp.vim.org/vim/runtime/spell' -" add local user default spell file as primary source for words -let &spellfile=fnamemodify($MYVIMRC, ":p:h")."/spell/spellfile-user.UTF-8.add" - -set nospell | " disable spell checker by default -set spelllang=en,de | " languages for the spell checker -set spellsuggest=10 | " how many words will z= suggest? -set thesaurus+=~/.vim/thesaurus/php.txt - - -"======================================================================================================================= -" UNDO: -" Persistent undo behaviour, also keeps undo history between starts -"======================================================================================================================= -if has('persistent_undo') - if isdirectory('/dev/shm') - set undodir=/dev/shm/ | " save undo file in memory. That is volatile, but fast and we have GIT for longer lasting undoes - set directory=/dev/shm/ | " swap file directory to RAM - set swapfile - elseif isdirectory('/tmp/') - set undodir=/tmp/ - endif - set undofile | " preserve undo history when closing and reopening buffers (see :help undo-persistence) -endif - - -"======================================================================================================================= -" DISPLAY & MULTI_BYTE -"======================================================================================================================= -if has("multi_byte") - scriptencoding utf-8 | " tell vim that we are using UTF-8 here - set encoding=utf-8 | " we need default UTF-8 encoding to use cool chars as line break and so on (see below) - set termencoding=utf-8 | " we just assume that this is supported. - - set fillchars= | " initialize empty fillchars - set listchars= | " initialize empty listchars - - if &term ==# 'linux' - set fillchars+=vert:\│ | " cool vertical split char - else - set fillchars+=vert:\║ | " cool vertical split char - endif - - set fillchars+=fold:\ | " - set fillchars+=diff:\ | " a white space gets used here - - set listchars+=extends:» | " symbols used when using :set list (which displays non-printable chars) - set listchars+=precedes:« | " symbols used when using :set list (which displays non-printable chars) - - set listchars+=tab:▏\ | " - set listchars+=trail:· | " symbols used when using :set list (which displays non-printable chars) - " set listchars+=eol:↲ | " symbols used when using :set list (which displays non-printable chars) - " set listchars+=space:⸳ | " · | " symbols used when using :set list (which displays non-printable chars) - set showbreak+=› | " symbol used in the beginning of a wrapped line - - " automatically enter list mode when going in insert mode (makes above syntax command temporarily ineffective) - set nolist - - autocmd InsertEnter * set list - autocmd InsertLeave * set list& - - autocmd InsertEnter * set colorcolumn=80,120 - autocmd InsertLeave * set colorcolumn& - " set fillchars+=stlnc:\― | " -end - - -"======================================================================================================================= -" AUTOCMDs and FileType specific stuff -"======================================================================================================================= -if has("autocmd") - " use the shada/viminfo file to return the cursor to where it was... - autocmd BufWinEnter * if &previewwindow | setlocal nonumber nolist signcolumn=no filetype=c nobuflisted | endif - - " Workaround: Allows Vim to yank text within wayland - " XDG_SESSION_TYPE is only set if a login manager was used - " WAYLAND_DISPLAY should always work - " if ($XDG_SESSION_TYPE ==# 'wayland' || ! empty($WAYLAND_DISPLAY)) && !has('nvim') - " autocmd TextYankPost * call system("wl-copy", getreg('+')) - " endif - - autocmd TextYankPost * echo '> text yanked to '. - \ (get(v:event,'regname') == '' - \ ? 'default register' - \ : 'register '.get(v:event,'regname')) - - - autocmd InsertLeave * silent! call matchadd('Convention', ' \+$', -1, 101, { 'conceal': '⟶' }) - autocmd InsertEnter * silent! call matchdelete(101) - - - "==================================================================================================================== - augroup FILETYPES - " indent within