Files
dotfiles/.config/vim/vimrc.d/30-settings.vim
Julian Prein c011f2ed6a vim:setts: Don't auto-open folds when searching
This makes it a lot easier to restrict the search (besides searching in
visual selection, which is quite limited). The cursor will still land on
the closed fold but only once, independent of the number of hits inside
of the fold.
2024-10-28 16:59:03 +01:00

129 lines
3.9 KiB
VimL

" Settings """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" linenumbers
set number
" If relative linenumbers are activated, have them only in the focused window
function! Numbertoggle()
augroup numbertoggle
au!
au OptionSet relativenumber call Numbertoggle()
if &relativenumber
au BufEnter,FocusGained,InsertLeave,WinEnter * if &nu | set rnu | endif
au BufLeave,FocusLost,InsertEnter,WinLeave * if &nu | set nornu | endif
endif
augroup END
endfunction
call Numbertoggle()
" 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
" Control how vim formats paragraphs. See :h fo-table
set formatoptions=tcro/qlnj
" 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:>·
" Wrap lines
set wrap
" When wrap is off, show a visual indicator that the lines continues
set listchars+=extends:>
" 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
" Do not redraw screen while executing macros, registers and other commands that
" have not been typed.
set lazyredraw
" Visual selection does not include the line break
set selection=old
" Only one global status line
set laststatus=3
" Wrap lines at chars in 'breakat' rather than at last character.
set linebreak
" Wrapped lines should have the same amount of indentation
set breakindent
" Put `\ ` before wrapped lines
let &showbreak = '\ '
" Replace concealable characters
set conceallevel=1
" Do not automatically open folds when searching
set foldopen-=search
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
let g:termdebug_wide = 1