"------------------------------------------------------------------------------ " File .vimrc " jul.io "------------------------------------------------------------------------------ " "set nocompatible " use vim defaults syntax on " use syntax highlighting set background=dark " when using black background terminal " colorscheme ron " for bash in windows this fixes my colors in vim inside tmux set nomodeline " workaround to close a vuln set number " line numbers set relativenumber " relative line numbers! How cool is that?! set clipboard=unnamed set backspace=indent,eol,start " more powerful backspacing set autoindent " always set autoindenting on set formatoptions+=t set nobackup " Don't keep a backup file set viminfo='20,\"50 " read/write a .viminfo file, don't store more than " 50 lines of registers set history=200 " keep many lines of command line history set showcmd " Show (partial) command in status line. set showmatch " Show matching brackets. set ignorecase " Do case insensitive matching set smartcase " When searching with Uppercase Letters be Case-Sensitive, otherwise don't be set incsearch " Incremental search set hlsearch " Search highlight hi Search ctermbg=LightGrey " change color for search hints set noexpandtab set tabstop=2 set sw=2 set so=7 "set 7 lines to the cursor when moving vertically with j/k set foldcolumn=1 "add a bit of extra margin to the left set smarttab set smartindent set enc=utf-8 " default UTF8 encoding set fileencoding=utf-8 " default UTF8 encoding set ruler " show the cursor position all the time set directory=~/.vim/swap/ set lazyredraw "to speed up vim a bit set regexpengine=1 " show current file with complete file in statusline set laststatus=2 set statusline+=%F filetype plugin on filetype indent on filetype on " With a map leader it's possible to do extra key combinations " like w saves the current file " my mapleader is for easy access with both hands let mapleader=" " let g:mapleader=" " hi LineTooLong cterm=bold ctermbg=red guibg=LightYellow match LineTooLong /\%>160v.\+/ "useful mappings for managing tabs map tn :tabnew map to :tabonly map tc :tabclose map tm :tabmove map t :tabnext " Delete trailing white space on save, useful for some filetypes ;) fun! CleanExtraSpaces() let save_cursor = getpos(".") let old_query = getreg('/') silent! %s/\s\+$//e call setpos('.', save_cursor) call setreg('/', old_query) endfun " grep will sometimes skip displaying the file name set grepprg=grep\ -nH\ $* let g:Tex_Folding=0 "I don't like folding. set iskeyword+=: " Press Space to turn off highlighting and clear any message already displayed. nnoremap :nohlsearch:echo " Incrementing selected numbers (works, when numbers are in a column) function! Incr() let a = line('.') - line("'<") let c = virtcol("'<") if a > 0 execute 'normal! '.c.'|'.a."\" endif normal `< endfunction vnoremap :call Incr() highlight ExtraWhitespace ctermbg=red guibg=red match ExtraWhitespace /\s\+$\| \+\ze\t/ nnoremap :%retab!:set list:%s/^\(\t\+\) */\1/ " Press F5 to insert datetime string from normal- and insert mode nnoremap "=strftime("%c")P inoremap =strftime("%c") " YAML and Ansible and so on augroup ansible_vim_fthosts autocmd! autocmd BufNewFile,BufRead hosts setfiletype yaml.ansible augroup END " as long as vim isn't in diff-mode check the code at opening and closing " also: special vimdiff-settings if ! &diff let g:syntastic_always_populate_loc_list = 1 let g:syntastic_auto_loc_list = 1 let g:syntastic_check_on_open = 1 let g:syntastic_check_on_wq = 1 nnoremap j nnoremap k nnoremap h nnoremap l endif " NerdTree Settings nnoremap n :NERDTreeToggle nnoremap nf :NERDTreeFocus nnoremap nc :NERDTreeClose " block-editing workaround for a windows-terminal-wsl situation nnoremap v "tweaking my statusline function! GitBranch() return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'") endfunction function! StatuslineGit() let l:branchname = GitBranch() return strlen(l:branchname) > 0?' '.l:branchname.' ':'' endfunction set laststatus=2 "always show statusline set statusline= set statusline+=%#PmenuSel# set statusline+=%{StatuslineGit()} set statusline+=%#LineNr# set statusline+=\ %f set statusline+=%m\ set statusline+=%= set statusline+=%#CursorColumn# set statusline+=\ %y set statusline+=\ %{&fileencoding?&fileencoding:&encoding} set statusline+=\[%{&fileformat}\] set statusline+=\ %p%% set statusline+=\ %l:%c set statusline+=\ call plug#begin('~/.vim/plugged') " --- Your Plugin List Goes Here --- " Example: Plug 'tpope/vim-surround' Plug 'preservim/nerdtree' Plug 'pearofducks/ansible-vim' " Automatically install plugins if they are not installed " Call plug#config_commit() is the modern way to replace auto_install, save_state, etc. " call plug#config_commit() " Optional: For automatic plugin updates on startup if you want " autocmd VimEnter * " \ PlugUpgrade | " \ execute PlugInstall | " \ PlugClean " Initialize plugin system, then load plugins call plug#end()