" general configuration: syntax on filetype plugin on " Enables the ftplugin options filetype indent on set nocompatible " turn off vi-compatibility (should be on by default) set autoindent " Automaticaly indent while writing set smarttab set number set incsearch set hlsearch set nosmartindent set showcmd set scrolloff=8 set enc=utf-8 set wrapscan " start searching at the beginning when EOF reached set matchpairs+=<:> " add angle brackets to list of matching bracket pairs " simple appending closing characters automatically inoremap { {} inoremap { {} inoremap {{ { inoremap {} {} inoremap } strpart(getline('.'), col('.')-1, 1) == "}" ? "\" : "}" inoremap ( () inoremap (( ( inoremap () () " skipping over the closing character: inoremap ) strpart(getline('.'), col('.')-1, 1) == ")" ? "\" : ")" inoremap [ [] inoremap [[ [ inoremap [] [] inoremap ] strpart(getline('.'), col('.')-1, 1) == "]" ? "\" : "]" inoremap < <> inoremap << < inoremap > strpart(getline('.'), col('.')-1, 1) == ">" ? "\" : ">" "inoremap " "" "inoremap ' '' " Tab navigation " new tab and move to previous window (NERDTree if open) nmap :tabnew :wincmd h nmap :tabprev nmap :tabnext nmap :tabclose " Resize windows with arrow keys nmap :res -1 nmap :res +1 nmap :vertical res -1 nmap :vertical res +1 " redefine some default colors highlight Search ctermfg=Black highlight Comment ctermfg=012 " " plugins " ======= " Use vim-plug as plugin manager " Autoinstall it when missing: let data_dir = has('nvim') ? stdpath('data') . '/site' : '~/.vim' if empty(glob(data_dir . '/autoload/plug.vim')) silent execute '!curl -fLo '.data_dir.'/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim' autocmd VimEnter * PlugInstall --sync | source $MYVIMRC endif " Open the existing NERDTree on each new tab autocmd BufWinEnter * if &buftype != 'quickfix' && getcmdwintype() == '' | silent NERDTreeMirror | endif " Shortcut for JSON formatting via jq if executable('jq') command JQ %!jq . endif " Plugin config section. Plugins will be installed under ~/.vim/plugged/ call plug#begin() " Ansible syntax highlighting Plug 'pearofducks/ansible-vim' " NERDtree Plug 'preservim/nerdtree' " Git plugin for NERDtree Plug 'Xuyuanp/nerdtree-git-plugin' " Statusline Plug 'vim-airline/vim-airline' " fugitive (git plugin, mainly for statusline) Plug 'tpope/vim-fugitive' " Git diff in sign column Plug 'airblade/vim-gitgutter' " Show commit messages under cursor with :GitMessenger or gm Plug 'rhysd/git-messenger.vim' " Latex plugin Plug 'lervag/vimtex' " Python-mode Plug 'python-mode/python-mode', { 'for': 'python', 'branch': 'develop' } " Latex-Suite Plug 'vim-latex/vim-latex' " tagalong " to automatically edit closing HTML tags " tag names should be changed either in insert mode or via 'cw' Plug 'AndrewRadev/tagalong.vim' " vim-css-color Plug 'ap/vim-css-color' " Format code with one button press Plug 'vim-autoformat/vim-autoformat' " for HTML formatting install tidy package " Comment stuff out: one line with `gcc`, selection with `gc` Plug 'tpope/vim-commentary' " Show python coverage, needs coverage.py installed (globally) " use with `:Coveragepy report` or `:Coveragepy show` Plug 'alfredodeza/coveragepy.vim' " Gruvbox color scheme Plug 'morhetz/gruvbox' " Ripgrep plugin for recursive search " use `:Rg ` to search in current directory Plug 'jremmen/vim-ripgrep' " Multi language linting tool " - https://github.com/koalaman/shellcheck install through package manager Plug 'dense-analysis/ale' call plug#end() " Set alias command for toggeling nerd tree command NT NERDTree " special configuration: " Python " ====== " " python-mode configuration (see :help pymode) let g:pymode_options_max_line_length = 120 "let g:pydiction_location = '~/.vim/pydiction-1.2/complete-dict' " Gruvbox color scheme " ==================== " set background=dark colorscheme gruvbox " vim-ripgrep " =========== " let g:rg_highlight = 1 " vim-gitgutter " ============= " let g:gitgutter_sign_added = '▇▇' let g:gitgutter_sign_modified = '▇▇' let g:gitgutter_sign_removed = '▇▇' let g:gitgutter_sign_modified_removed = '▇▇' highlight GitGutterAdd ctermfg = 2 guifg=#008000 highlight GitGutterChange ctermfg = 3 guifg=#808000 highlight GitGutterDelete ctermfg = 1 guifg=#800000 highlight GitGutterChangeDeleteLine ctermfg = 3 guifg=#808000 highlight SignColumn ctermbg=0 guibg=#000000 " Vala autocmd BufRead *.vala,*.vapi set efm=%f:%l.%c-%[%^:]%#:\ %t%[%^:]%#:\ %m " Disable valadoc syntax highlight "let vala_ignore_valadoc = 1 " Enable comment strings let vala_comment_strings = 1 " Highlight space errors let vala_space_errors = 1 " Disable trailing space errors "let vala_no_trail_space_error = 1 " Disable space-tab-space errors "let vala_no_tab_space_error = 1 " Minimum lines used for comment syncing (default 50) "let vala_minlines = 120 " ANTLR4 syntax highlighting au BufRead,BufNewFile *.g4 set filetype=antlr4