" Keybinds ########################################################################## " Set leader key let mapleader = "\" " Disable arrow keys noremap "" noremap! noremap "" noremap! noremap "" noremap! noremap "" noremap! " Stop highlighting search result when pressing Return nnoremap :nohlsearch " Indentation jump " https://vim.fandom.com/wiki/Move_to_next/previous_line_with_same_indentation noremap :call search('^'. matchstr(getline('.'), '\(^\s*\)') .'\%<' . line('.') . 'l\S', 'be') noremap :call search('^'. matchstr(getline('.'), '\(^\s*\)') .'\%>' . line('.') . 'l\S', 'e') " Split view navigation nnoremap h nnoremap j nnoremap k nnoremap l " Settings ########################################################################## " hybrid linenumbers set number relativenumber " 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 " Highlight current line set cursorline " Automatically add leading comment (when pressing o/O or enter in Insert) set formatoptions+=cro " see :help persistent-undo set undofile " Aesthetics ####################################################################### " use onedark as theme for syntax highlighting syntax on colorscheme onedark " Use 24-bit (true-color) mode if (has("termguicolors")) set termguicolors endif " get transparent background of the terminal back " (at least in nvim, i can't get it to work in vanilla) if (has('nvim')) highlight Normal guibg=NONE highlight NonText guibg=NONE endif " zshOption is a huge regex that leads to massive lags when scrolling " Be sure to disable it after activating syntax highlighting autocmd filetype zsh syntax clear zshOption " change cursor shape depending on mode if (has('nvim')) " Beam when exiting autocmd VimLeave * silent !echo -ne "\e[5 q" else " https://vim.fandom.com/wiki/Change_cursor_shape_in_different_modes " https://github.com/tmux/tmux/issues/1593 if exists('$TMUX') " Start insert mode - vertical bar/beam let &t_SI = "\ePtmux;\e\e[5 q\e\\" " Start replace mode - horizontal bar/underline let &t_SR = "\ePtmux;\e\e[3 q\e\\" " End insert or replace mode - block let &t_EI = "\ePtmux;\e\e[1 q\e\\" " Block when entering autocmd VimEnter * silent !echo -ne "\ePtmux;\e\e[1 q\e\\" " Beam when exiting autocmd VimLeave * silent !echo -ne "\ePtmux;\e\e[5 q\e\\" else " Start insert mode - vertical bar/beam let &t_SI = "\e[5 q" " Start replace mode - horizontal bar/underline let &t_SR = "\e[3 q" " End insert or replace mode - block let &t_EI = "\e[1 q" " Block when entering autocmd VimEnter * silent !echo -ne "\e[1 q" " Beam when exiting autocmd VimLeave * silent !echo -ne "\e[5 q" endif endif " Highlight trailing whitespaces " (https://vim.fandom.com/wiki/Highlight_unwanted_spaces) " Create highlight group highlight ExtraWhitespace ctermbg=red guibg=red " Associate with patter (trailing whitespaces) match ExtraWhitespace /\s\+$/ " apply not only to the first window autocmd BufWinEnter * match ExtraWhitespace /\s\+$/ " Do not match when typing at the end of a line autocmd InsertEnter * match ExtraWhitespace /\s\+\%#\@