Files
dotfiles/.config/vim/vimrc.d/30-settings.vim
Julian Prein ba3a54fc44 vim: Move numbertoggle autocmd into settings.vim
Step by step I want to restructure the vim files. The approach to
cleanly divide the config by topics works in zsh pretty well, but is too
vague in vim for my liking.

Especially (the very small) functions and autocommands that have the
purpose of setting options or mapping keys or the interplay of multiple
categories together, make it difficult to decide in which file the
snippets should lay.
2022-08-28 01:06:55 +02:00

106 lines
3.2 KiB
VimL

" Settings """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" hybrid linenumbers
set number relativenumber
augroup numbertoggle
au!
au BufEnter,FocusGained,InsertLeave,WinEnter * if &nu | set rnu | endif
au BufLeave,FocusLost,InsertEnter,WinLeave * if &nu | set nornu | endif
augroup END
" no timeout when exiting insert-mode
" (see https://www.johnhawthorn.com/2012/09/vi-escape-delays/)
set timeoutlen=1000 ttimeoutlen=0
" smart case insensitive search (insens: /copy /Copy\c; sens: /Copy /copy\C)
set ignorecase smartcase
" Tab size
set tabstop=4
" Shift the same amount as tabstop
set shiftwidth=0
" Auto-wrap text and comments; automatically add comment leader when creating
" new lines and delete it when joining; do not break already too long lines;
" allow formatting with gq. Recognize numbered lists when formatting.
set formatoptions=tcroqljn
" Autoindent new lines
set autoindent
" Copy structure of the existing lines indent when autoindenting a new line
set copyindent
" Keep lines under 80 characters.
set textwidth=80
" Do not insert two spaces before a new sentence when formatting
set nojoinspaces
" see :help persistent-undo
set undofile
" Update every 300ms for better experience with plugins like gitgutter and coc
set updatetime=300
" Check for spelling in comments and strings
set spell spelllang=en
" Show the effect of a command while typing (substitute). Show partial
" off-screen results in a preview window.
if (has('nvim'))
set inccommand=split
endif
" Put new window below/right of current
set splitbelow splitright
" What is ce there for? cw should include whitespace like dw.
if (has('nvim'))
set cpoptions-=_
else
nmap cw dwi
nmap cW dWi
endif
" Highlight current line
"set cursorline
" Show ruler at column behind &textwidth
set colorcolumn=+1
" Show menu for possible matches when using command-line completing.
if (has('wildmenu'))
set wildmenu
endif
" Command-line completion tab behavior:
" First: Complete longest common string and show wildmenu
" Second: Complete each full match (Cycle through the menu)
set wildmode=longest:full,full
" Show typed (partial) command on screen.
if (has('cmdline_info'))
set showcmd
endif
" Show whitespace characters
set list
set listchars=tab:>·
" Keep current line away from top/bottom borders of the buffer when scrolling
set scrolloff=15
" Enable mouse
set mouse=a
" Disable pesky swap file warnings
set shortmess+=A
" Automatically update file that was modified outside of vim.
" Beware that this updates only on certain events and thus works different then
" probably expected. See corresponding autocommand or:
" https://vi.stackexchange.com/questions/2702
set autoread
" Include `-` in keyword characters
set iskeyword+=-
" Do not automatically insert <EOL> at EOF if missing
set nofixendofline
" Let the cursor move beyond the EOL when in visual-block mode.
set virtualedit+=block
if (exists('g:loaded_gitgutter'))
" Augment the default `foldtext()` with an indicator whether the folded
" lines have been changed.
set foldtext=gitgutter#fold#foldtext()
endif
" Netrw
" Use tree style listing
let g:netrw_liststyle=3
" TermDebug
" Have source view to the side of the splits of debugger and program
augroup termdebug_settings
au!
autocmd SourcePost termdebug.vim let g:termdebug_wide = 1
augroup end