166 lines
8.1 KiB
Plaintext
166 lines
8.1 KiB
Plaintext
" VIM CORE
|
||
set nocompatible " enable advanced features
|
||
set autochdir " current dir is vim workdir
|
||
set wildmenu " complete all filetypes
|
||
set mouse=v " don't interract with the mouse
|
||
set laststatus=2 " always show the status line
|
||
set keywordprg=":help" " show vim help when hitting "K"
|
||
set backspace=indent,eol,start " make backspace like in a normal editor
|
||
set ttimeout " set timeout for key combinations to on
|
||
set ttimeoutlen=50 " set timeout for key combinations to 50ms
|
||
set number " enable line numbers
|
||
"set relativenumber " enable relative line numbers (slow)
|
||
"set cursorline " highlight line number + line with cursor (slow)
|
||
set lazyredraw
|
||
set spelllang=de,en
|
||
syntax enable " enable syntax plugin (builtin)
|
||
filetype plugin indent on " load indent and plugin based on filetype
|
||
|
||
" INDENTATION
|
||
set autoindent " start new lines on same indent level
|
||
set smartindent " smart indentation for programming languages
|
||
set breakindent " visually wrapped lines will respect the indent level
|
||
set cindent " smart indentation for C programming
|
||
set formatprg=par\ -B+.,\\-\\!\\?\\\"\\\'\\*\\<\ -w72qie
|
||
|
||
" SEARCH
|
||
set incsearch " search while typing
|
||
set hlsearch " highlight all search matches
|
||
set wrapscan " search continues on top
|
||
set ignorecase " search case insensitive
|
||
set smartcase " search case sensitive once a capital letter is used
|
||
|
||
" SPACES (TABS)
|
||
set tabstop=4 " one tab counts X spaces (used by retab)
|
||
set softtabstop=4
|
||
set shiftwidth=4 " number of spaces used to indent
|
||
set expandtab " use spaces when hitting <tab>
|
||
set smarttab " if the line starts with space, backspace will delete "shiftwidth"
|
||
set textwidth=0
|
||
|
||
set list
|
||
set listchars=tab:>-
|
||
let c_space_errors=1
|
||
|
||
" FOLDING
|
||
set foldmethod=indent " Fold at indent level
|
||
set foldnestmax=3 " Fold max 3 levels deep
|
||
set foldlevel=1
|
||
set foldlevelstart=10 " Start to fold at level 0
|
||
|
||
" TEMPORARY FILES
|
||
set undofile " save undo history, so it can be restored after reopening a file
|
||
set undodir=~/.vim/undo// " save undo history here (don't clutter the filesystem)
|
||
set backup " create backups
|
||
set backupcopy=yes
|
||
set backupdir=~/.vim/backup// " save backup files here (don't clutter the filesystem)
|
||
set backupskip=mutt-* " do not create backups of emails
|
||
set directory=~/.vim/swapfiles// " move swapfiles out of the way
|
||
|
||
" LOOK N FEEL
|
||
set t_Co=256 " for terminal with 256 colors
|
||
set background=dark " I prefer dark backgrounds
|
||
highlight Normal ctermbg=NONE guibg=#181818 " transparent background (terminal), sane color (gui)
|
||
highlight SpellBad cterm=NONE ctermfg=darkred ctermbg=NONE " make spellcheck work with cursorline (set fg color)
|
||
|
||
highlight ColorColumn72 ctermfg=03
|
||
call matchadd('ColorColumn72', '\%72v', 100) " highlight column 78 in green
|
||
match ErrorMsg '\(TODO\|FIXME\|OPTIMIZE\|BUG\|workaround\|WTF\)' " highlight code comment keywords
|
||
|
||
" VIMDIFF COLOR FIX
|
||
highlight DiffAdd cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
|
||
highlight DiffDelete cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
|
||
highlight DiffChange cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Red
|
||
highlight DiffText cterm=bold ctermfg=10 ctermbg=88 gui=none guifg=bg guibg=Red
|
||
|
||
" CURSOR
|
||
let &t_SI = "\e[6 q" " change cursor to ibeam in inser mode
|
||
let &t_EI = "\e[2 q" " change cursort to block in normal mode
|
||
|
||
" GRAPHICAL VIM / GVIM
|
||
set guifont=Fira\ Code\ 13 " Use this font in gvim
|
||
set guioptions= " don't show any gui elements
|
||
|
||
" TAB NAVIGATION
|
||
set tabpagemax=25 " allowed max tabs (10)
|
||
inoremap [5^ <Esc>:tabn<CR> " Strg+PgUp: Next tab
|
||
nnoremap [5^ :tabn<CR>
|
||
inoremap [6^ <Esc>:tabp<CR> " Strg+PgDown: Previous tab
|
||
nnoremap [6^ :tabp<CR>
|
||
inoremap <Esc>:tabnew<CR> " Strg+T: New tab
|
||
nnoremap :tabnew<CR>
|
||
|
||
" SCREEN FIXES
|
||
map [7~ <Home>
|
||
imap [7~ <Home>
|
||
nmap [7~ <Home>
|
||
|
||
map [8~ <End>
|
||
imap [8~ <End>
|
||
nmap [8~ <End>
|
||
|
||
map [5~ <PageUp>
|
||
imap [5~ <PageUp>
|
||
nmap [5~ <PageUp>
|
||
|
||
map [6~ <PageDown>
|
||
imap [6~ <PageDown>
|
||
nmap [6~ <PageDown>
|
||
|
||
" NETRW
|
||
let g:netrw_banner = 0 " disable annoying banner
|
||
let g:netrw_browse_split = 4 " open in prior window
|
||
let g:netrw_altv = 1 " open splits to the right
|
||
let g:netrw_liststyle = 3 " tree view
|
||
|
||
" TAGS FILE
|
||
set tags=./tags; " Search for tags file backwards recursive
|
||
nnoremap gt <c-]> " Jump to tag (go tag)
|
||
nnoremap gb <c-o> " Jump to last position (go back)
|
||
nmap gh :FSHere<CR> " Jump to corresponding header file (go header)
|
||
|
||
" SUDO SAVE
|
||
cmap w!! w !sudo tee > /dev/null
|
||
|
||
" REMEMBER LAST CURSOR POSITION
|
||
if has("autocmd")
|
||
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g'\"" | endif
|
||
endif
|
||
|
||
" OPEN HELP IN A NEW TAB
|
||
command! -nargs=1 -complete=help H :tabnew | :set buftype=help | :h <args>
|
||
|
||
" NAVIGATE ON VISUAL LINES (SOFT WRAP)
|
||
imap <silent> <Down> <C-o>gj
|
||
imap <silent> <Up> <C-o>gk
|
||
nmap <silent> <Down> gj
|
||
nmap <silent> <Up> gk
|
||
|
||
" USE ARROW / VIM KEYS INSIDE OMNIBOX
|
||
inoremap <expr> j pumvisible() ? '<C-n>' : 'j'
|
||
inoremap <expr> k pumvisible() ? '<C-p>' : 'k'
|
||
inoremap <expr> <Down> pumvisible() ? '<C-n>' : '<Down>'
|
||
inoremap <expr> <Up> pumvisible() ? '<C-p>' : '<Up>'
|
||
|
||
" AUTO BRACKET
|
||
inoremap {<CR> {<CR> <CR>}<up><right>
|
||
|
||
" TREAT C FILES AS C, NOT C++
|
||
augroup project
|
||
autocmd!
|
||
autocmd BufRead,BufNewFile *.h,*.c set filetype=c.doxygen
|
||
augroup END
|
||
|
||
function! Copy()
|
||
:'<,'>w! /tmp/vimcopy.txt
|
||
endfunction
|
||
|
||
function! Paste()
|
||
:r /tmp/vimcopy.txt
|
||
endfunction
|
||
|
||
au BufReadPost * if getfsize(bufname("%")) > 512*1024 |
|
||
\ set syntax= |
|
||
\ set nonumber |
|
||
\ endif
|