1
0
mirror of https://github.com/vbrandl/dotfiles synced 2024-11-26 17:35:12 +01:00
dotfiles/editors/vim/vimrc
2018-11-22 18:23:20 +01:00

350 lines
8.8 KiB
VimL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

" set vim mode
set nocompatible
source ~/.vim/plugins.vim
filetype plugin indent on
if has("vms")
set nobackup
else
" set backup
if has('persistent_undo')
set undofile
endif
endif
syntax enable
" set transparent background
" let g:solarized_termtrans=1
" use italics
let g:solarized_term_italics=1
" filetype-specific syntax highlighting groups
let g:solarized_extra_hi_groups=1
" let g:solarized_contrast="high"
" let g:solarized_visibility="high"
set background=dark
colorscheme solarized8
" underline spelling
highlight clear SpellBad
highlight SpellBad cterm=undercurl
" true color
set termguicolors
" make true colors work in tmux
let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
" make comments and HTML attributes italic
"highlight Comment cterm=italic
"highlight htmlArg cterm=italic
"highlight Normal ctermbg=NONE guibg=NONE
"highlight NonText ctermbg=NONE guibg=NONE
" files and backups
set directory=$HOME/.vim/swapfiles//
" set backupdir=$HOME/.vim/backupdir//
set undodir=$HOME/.vim/undofiles//
" yank into system clipboard
set clipboard=unnamedplus
" Only do this part when compiled with support for autocommands.
if has("autocmd")
" Put these in an autocmd group, so that we can delete them easily.
augroup vimrcEx
au!
autocmd FileType text setlocal foldtext<
augroup END
" remember cursor position
autocmd BufReadPost *
\ if line("'\"") > 1 && line("'\"") <= line("$") |
\ exe "normal! g`\"" |
\ endif
endif " has("autocmd")
if !has('nvim')
" Get the defaults that most users want.
source $VIMRUNTIME/defaults.vim
" The matchit plugin makes the % command work better
packadd matchit
endif
" always set autoindenting on
set autoindent
" smart indent; stop indent when closing brackets etc
set smartindent
" searching
" highlight search result
set hlsearch
" ignore case
set ignorecase
" case-sensitive if expression contains capital letters
set smartcase
" incremental search
set incsearch
set nolazyredraw
" delete whitespace, line break and char using <BS>
set backspace=indent,eol,start
" always show curser position
set ruler
" keep 1000 lines of history
set history=1000
set textwidth=120
set colorcolumn=+1
" display absolute number of current line
set number
" display relative line numbers
set relativenumber
" highlight current line
set cursorline
" encoding
set fileencoding=utf-8
" break at last word instead of last char
set linebreak
" autoload file changes
set autoread
" tab control
" insert spaces
set expandtab
set smarttab
set tabstop=4
set softtabstop=4
set shiftwidth=4
set shiftround
"set completeopt+=longest
" invisible characters
set list
set listchars=tab:→\ ,eol,trail:⋅,extends:,precedes:
set showbreak=
" code folding settings
" fold based on syntax
set foldmethod=indent
" don't fold by default
set nofoldenable
set foldlevel=1
" smoother redrawing
set ttyfast
" diff with vertical split
set diffopt+=vertical
" show the status line all the time
set laststatus=2
" keep 5 lines on the screen when scrolling
set scrolloff=5
" enhanced command line completion
set wildmenu
" Search down into subfolders
" Provides tab-completion for all file-related tasks
set path+=**
" allow switching away from unsaved buffers
set hidden
" show incomplete commands
set showcmd
"set noshowmode " don't show which mode disabled for PowerLine
" complete files like a shell
set wildmode=list:longest
set shell=$SHELL
" command bar height
set cmdheight=1
" set terminal title
set title
set shortmess+=TOFwat
" show matching braces
set showmatch
" how many tenths of a second to blink
set mat=2
" set spell langs
set spelllang=de,en
"" user commands
"" create tags file
"" ^] jump to tag under cursor
"" g^] for ambiguous tags
"" ^t jump back in the tag stack
"command! MakeTags !ctags -R .
" error bells
set errorbells
set visualbell
set timeoutlen=500
" turn on manpages (:Man)
runtime ftplugin/man.vim
" set a map leader for more key combos
let mapleader=','
" clear highlighted search
noremap <space> :nohlsearch<cr>
" enable . command in visual mode
vnoremap . :normal .<cr>
" move between windows using CTRL+hjll
map <silent> <C-h> :call functions#WinMove('h')<cr>
map <silent> <C-j> :call functions#WinMove('j')<cr>
map <silent> <C-k> :call functions#WinMove('k')<cr>
map <silent> <C-l> :call functions#WinMove('l')<cr>
" count wraped lines as one line when doing relative jumps
noremap <silent> <expr> j (v:count == 0 ? 'gj' : 'j')
noremap <silent> <expr> k (v:count == 0 ? 'gk' : 'k')
" scroll the viewport faster
nnoremap <C-e> 3<C-e>
nnoremap <C-y> 3<C-y>
"
"" moving up and down work as you would expect
"nnoremap j gj
"nnoremap k gk
"nnoremap ^ g^
"nnoremap $ g$
"" cool resizing
"nnoremap <Left> :vertical resize +2<CR>
"nnoremap <Right> :vertical resize -2<CR>
"nnoremap <Up> :resize -2<CR>
"nnoremap <Down> :resize +2<CR><Paste>
" search for word under the cursor
nnoremap <leader>/ "fyiw :/<c-r>f<cr>
" highlight conflicts
match ErrorMsg '^\(<\|=\|>\)\{7\}\([^=].\+\)\?$'
" make the highlighting of tabs and other non-text less annoying
highlight SpecialKey ctermbg=none ctermfg=8
highlight NonText ctermbg=none ctermfg=8
"" Section AutoGroups {{{
"" file type specific settings
augroup configgroup
autocmd!
" automatically resize panes on resize
autocmd VimResized * exe 'normal! \<c-w>='
autocmd BufWritePost .vimrc,.vimrc.local,init.vim source %
autocmd BufWritePost .vimrc.local source %
" save all files on focus lost, ignoring warnings about untitled buffers
autocmd FocusLost * silent! wa
" make quickfix windows take all the lower section of the screen
" when there are multiple windows open
autocmd FileType qf wincmd J
" autocmd BufNewFile,BufReadPost *.md set filetype=markdown
" let g:markdown_fenced_languages = ['css', 'javascript', 'js=javascript', 'json=javascript', 'stylus', 'html']
" " autocmd! BufEnter * call functions#ApplyLocalSettings(expand('<afile>:p:h'))
" autocmd BufNewFile,BufRead,BufWrite *.md syntax match Comment /\%^---\_.\{-}---$/
autocmd! BufWritePost * Neomake
augroup END
" }}}
" paste without indention
function! WrapForTmux(s)
if !exists('$TMUX')
return a:s
endif
let tmux_start = "\<Esc>Ptmux;"
let tmux_end = "\<Esc>\\"
return tmux_start . substitute(a:s, "\<Esc>", "\<Esc>\<Esc>", 'g') . tmux_end
endfunction
"let &t_SI .= WrapForTmux("\<Esc>[?2004h")
"let &t_EI .= WrapForTmux("\<Esc>[?2004l")
function! XTermPasteBegin()
set pastetoggle=<Esc>[201~
set paste
return ""
endfunction
inoremap <special> <expr> <Esc>[200~ XTermPasteBegin()
" ctrlp
" order top to bottom
let g:ctrlp_match_window='bottom,order::ttb'
" open files in new buffer
let g:ctrlp_switch_buffer=0
" use ripgrep if available
if executable('rg')
set grepprg=rg\ --color=never
let g:ctrlp_user_command='rg %s --files --color=never --glob ""'
let g:ctrlp_use_caching=0
endif
" use ag if available
if executable('ag')
set grepprg=ag\ --nogroup\ --nocolor
let g:ctrlp_user_command='ag %s -l --nocolor -g ""'
let g:ctrlp_use_caching=0
endif
" Append modeline after last line in buffer.
" Use substitute() instead of printf() to handle '%%s' modeline in LaTeX files.
function! AppendModeline()
let l:modeline = printf(" vim: set filetype=%s ts=%d sw=%d tw=%d %set :",
\ &filetype, &tabstop, &shiftwidth, &textwidth, &expandtab ? '' : 'no')
let l:modeline = substitute(&commentstring, "%s", l:modeline, "")
call append(line("$"), l:modeline)
endfunction
nnoremap <silent> <Leader>ml :call AppendModeline()<CR>
" set textwidth for mails
autocmd FileType mail setlocal textwidth=72
" netrw settings
" disable banner
let g:netrw_banner=0
" open in prior window
let g:netrw_browse_split=4
" open splits to the right
let g:netrw_altv=1
" treeview
let g:netrw_liststyle=3
let g:netrw_list_hide=netrw_gitignore#Hide()
let g:netrw_list_hide.=',\(^\|\s\s\)\zs\.\S\+'
"" racer config (rust autocomplete)
"let g:racer_cmd = "/home/me/.cargo/bin/racer"
"let g:racer_experimental_completer = 1
"au FileType rust nmap gd <Plug>(rust-def)
"au FileType rust nmap gs <Plug>(rust-def-split)
"au FileType rust nmap gx <Plug>(rust-def-vertical)
"au FileType rust nmap <leader>gd <Plug>(rust-doc)
"" " javacomplete2
"" autocmd FileType java setlocal omnifunc=javacomplete#Complete
"" " enable smart (trying to guess import option) inserting class imports with F4
"" nmap <F4> <Plug>(JavaComplete-Imports-AddSmart)
"" imap <F4> <Plug>(JavaComplete-Imports-AddSmart)
"" " enable smart (trying to guess import option) inserting class imports with F4
"" nmap <F5> <Plug>(JavaComplete-Imports-Add)
"" imap <F5> <Plug>(JavaComplete-Imports-Add)
"" " add all missing imports with F6
"" nmap <F6> <Plug>(JavaComplete-Imports-AddMissing)
"" imap <F6> <Plug>(JavaComplete-Imports-AddMissing)
"" " add all missing imports with F6
"" nmap <F7> <Plug>(JavaComplete-Imports-RemoveUnused)
"" imap <F7> <Plug>(JavaComplete-Imports-RemoveUnused)