dotfiles/.vimrc

163 lines
4.7 KiB
VimL

" Vundle
filetype off
" Set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
" Download plug-ins to the ~/.vim/plugged/ directory
call vundle#begin('~/.vim/plugged')
" Let Vundle manage Vundle; muss immer der erste Eintrag sein
Plugin 'VundleVim/Vundle.vim'
" languagepack
Plugin 'sheerun/vim-polyglot'
" fuzzy finder
Plugin 'ctrlpvim/ctrlp.vim'
" git integration G:
Plugin 'tpope/vim-fugitive'
" auto einrueckung
Plugin 'tpope/vim-sleuth'
call vundle#end()
" ### allgemeine Optionen
" ### Suche
" While typing a search command, show immediately where the so far typed pattern matches.
set incsearch
" global bei suche immer mit an
set gdefault
" When there is a previous search pattern, highlight all its matches.
set hlsearch
" Ignore case in search patterns.
set ignorecase
" Override the 'ignorecase' option if the search pattern contains upper case characters.
set smartcase
" ### Nummern
" Show line numbers.
set number
" toggle linenumbers
nmap <C-n> :set nonu!<CR>
" ### Kommandovervollständigung
" https://www.reddit.com/r/vim/comments/oo9gms/any_way_to_get_vim_to_not_defaulting_to_the_first/h5wygix/?context=8&depth=9
set wildmode=longest,list,full
set wildmenu
set wildignore=*.o,*~
" ### Rest
" Show (partial) command in status line.
set showcmd
set virtualedit=onemore
set encoding=UTF-8
set visualbell
set ruler
set undolevels=1000
set backspace=indent,eol,start
" ermögliche das bearbeitete buffer in der hintergrund können
set hidden
" verhindert zeilenumbrüche
set nowrap
set showbreak=+++
" https://vim.fandom.com/wiki/Automatic_word_wrapping
set wrap linebreak
" Enable syntax highlighting
syntax on
" Enable mouse drag on window splits
set mouse=a
" https://unix.stackexchange.com/questions/12535/how-to-copy-text-from-vim-to-an-external-program
set clipboard=unnamedplus
" zeige "matching" klammer usw.
set showmatch
" ### Plugins
" ### ripgrep und ctrlp
" sudo apt install ripgrep(rg)
if executable('rg')
let g:ctrlp_user_command = 'rg %s --files --hidden --color=never --glob ""'
else
let g:ctrlp_user_command = 'find %s -type f'
endif
" let g:ctrlp_map = '<c-f>' "aufruf mit strg+f
nmap <C-f> :CtrlP<CR>
" ignore files
" https://github.com/ctrlpvim/ctrlp.vim
set wildignore+=*/tmp/*,*.so,*.swp,*.zip " MacOSX/Linux
set wildignore+=*\\tmp\\*,*.swp,*.zip,*.exe " Windows
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
" stelle standard keybinding um
let g:ctrlp_map = ''
" ### Keybindings
" deaktiviere Ex-Mode keybinding
:nnoremap Q <Nop>
" Ctrl+S zum speichern
nmap <C-s> :w<CR>
" ctrl+W zum schließen
nmap <C-w> :q<CR>
" ctrl+P: set paste
nmap <C-p> :set paste!<CR>
" ctrl+t fuer neuen tab
nmap <C-t> :tabnew<CR>
" leader-key
:let mapleader = ","
" vim.fugitiv in neuem tab
nmap <C-g> :tab G
" markiere text im visual mode; suche dann danach mit // im visual-mode
" https://vim.fandom.com/wiki/Search_for_visually_selected_text
vnoremap // y/\V<C-R>=escape(@",'/\')<CR><CR>
" https://shapeshed.com/vim-statuslines/
function! GitBranch()
return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
endfunction
" ### Statuszeile
" https://stackoverflow.com/questions/56274737/what-is-the-return-value-for-visual-block-mode-in-vimscript
" https://jdhao.github.io/2019/11/03/vim_custom_statusline/
" https://shapeshed.com/vim-statuslines/
" https://jip.dev/posts/a-simpler-vim-statusline/
" https://jordanelver.co.uk/blog/2015/05/27/working-with-vim-colorschemes/
" blende insert/visual/... in der commandline aus, steht in lightline
set noshowmode
set laststatus=2
" Funktion git branch
function! StatuslineGit()
let l:branchname = GitBranch()
return strlen(l:branchname) > 0?' '.l:branchname.' ':''
endfunction
set statusline=
set statusline+=%#StatusLineTerm#
set statusline+=%{g:currentmode[mode()]}
set statusline+=%#PmenuSel#
set statusline+=%{StatuslineGit()}
set statusline+=%#ToolButton#
set statusline+=\%f
set statusline+=%#TabLineFill#
set statusline+=%m
set statusline+=%=
set statusline+=\ %y
set statusline+=\ %{&fileencoding?&fileencoding:&encoding}
set statusline+=\ [%{&fileformat}\]
set statusline+=\ %l:%c
set statusline+=\
set statusline+=%{&paste?'PASTE':''}
let g:currentmode={
\ 'n' : ' NORMAL ',
\ 'no' : ' NORMAL-OPERATOR PENDING ',
\ 'v' : ' VISUAL ',
\ 'V' : ' VISUAL-LINE ',
\ "\<C-V>" : ' VISUAL BLOCK ',
\ 's' : ' SELECT ',
\ 'S' : ' SELECT-LINE ',
\ 'x19' : ' SELECT-BLOCK ',
\ 'i' : ' INSERT ',
\ 'R' : ' REPLACE ',
\ 'Rv' : ' VISUAL-REPLACE ',
\ 'c' : ' COMMAND ',
\ 'cv' : ' VIM EX ',
\ 'ce' : ' EX ',
\ 'r' : ' PROMPT ',
\ 'rm' : ' MORE ',
\ 'r?' : ' CONFIRM ',
\ '!' : ' SHELL ',
\ 't' : ' TERMINAL '
\}