From f2e01d7e513067ddb57c75f6e38cdcf434946cf8 Mon Sep 17 00:00:00 2001 From: Max Christian Pohle Date: Mon, 22 Oct 2018 00:02:58 +0200 Subject: Major refactoring for version 2.0 vim-plug has been removed and replaced with Vims internal bundle mechanism. But I already noticed, that there is also GLVM now and started trying that as well. --- vimrc-common | 355 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 355 insertions(+) create mode 100644 vimrc-common (limited to 'vimrc-common') diff --git a/vimrc-common b/vimrc-common new file mode 100644 index 0000000..00c7996 --- /dev/null +++ b/vimrc-common @@ -0,0 +1,355 @@ +"======================================================================================================================= +" GENERAL: +" It is likely, that you will want to overwrite these settings with a +" project-local .vimrc file (activated with exrc setting) +"======================================================================================================================= + +set exrc | " enable exrc, a specific .exrc per project, which can contain usual .vimrc commands +set modeline | " set variables specific to a file, like indentation by adding a comment +set textwidth=0 | " better done with modeline or local exrc and not here +set ts=4 sts=4 sw=4 expandtab | " better done with a modeline or local exrc +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) +set cindent cinoptions+=(0 | " indent at parentheses + +set path+=** | " allow recursive searches for files +let &path = &path.",/usr/lib/modules/".substitute(system('uname -r'), "\n", "", "")."/build/include" + +filetype on +filetype plugin on +filetype indent on + +syntax on | " enable syntax highlighting +syntax sync minlines=60 | " how many preceding lines will be parsed? (has performance impact) + +"======================================================================================================================= +" 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 + + +"======================================================================================================================= +" 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 + +" ====================================================================================================================== +" 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 + +set pumheight=8 | " Determines the maximum number of items to show in the pop-up menu for +set scrolljump=5 | " how many lines get scrolled into view when cursor reaches the screens edge +set scrolloff=0 | " 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) +set cmdheight=2 | " sets the command line's height +set signcolumn=auto | " 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 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 complete+=i | " scan current and included files for completions +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=2 | " 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')) + +" 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) + +"======================================================================================================================= +if has("autocmd") + " use the shada/viminfo file to return the cursor to where it was... + autocmd BufReadPost * call setpos(".", getpos("'\"")) + autocmd BufWinEnter * if &previewwindow | setlocal nonumber nolist signcolumn=no filetype=c nobuflisted | 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