" vim: set fenc=utf-8 ft=vim fdm=marker fmr={{{,}}}: " author: Thomas Ruoff " Basics {{{ set hidden set ttyfast set lazyredraw set updatetime=300 set synmaxcol=512 set modeline set nobackup set noswapfile set mouse=a set mousehide set wildmode=list:longest,full set wildignore+=*.swp,*.bak,*.jpg,*.gif,*.png,*.git, set splitright set splitbelow " yank delete change and put operations go by default in `"+` register " so in the systems clipboard accessable by CTRL-V on all OS types if has('mac') set clipboard^=unnamed else set clipboard^=unnamedplus endif " set ignorecase set infercase set smartcase set ignorecase set hlsearch set gdefault set number set report=0 set showcmd set showmatch set spellcapcheck= set complete+=kspell let mapleader=" " let maplocalleader=" " " netrw let g:netrw_banner = 0 let g:netrw_liststyle = 3 let g:netrw_browse_split = 3 " sort is affecting only: directories on the top, files below let g:netrw_sort_sequence = '[\/]$,*' " }}} " Plugins {{{ call plug#begin('~/.vim/plugged') Plug 'tpope/vim-sensible' Plug 'tpope/vim-unimpaired' Plug 'tpope/vim-surround' Plug 'tpope/vim-abolish' Plug 'tpope/vim-fugitive' Plug 'tpope/vim-rhubarb' Plug 'airblade/vim-gitgutter' Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } Plug 'junegunn/fzf.vim' nnoremap b :Buffers nnoremap f :GFiles nnoremap F :Files nnoremap c :Commits nnoremap w :Windows nnoremap m :Maps nnoremap h :Helptags nnoremap / :Rg nnoremap * :Rg nnoremap C :Commands Plug 'editorconfig/editorconfig-vim' let g:EditorConfig_exclude_patterns = ['fugitive://.*', 'scp://.*'] Plug 'tpope/vim-projectionist' Plug 'simnalamburt/vim-mundo' nnoremap u :MundoToggle Plug 'w0rp/ale' nmap [a (ale_previous_wrap) nmap (ale_next_wrap) let g:ale_linters = {} let g:ale_linters.javascript = ['eslint'] let g:ale_fixers = {} let g:ale_fixers.javascript = ['eslint'] let g:ale_fix_on_save = 1 Plug 'neoclide/coc.nvim', {'branch': 'release'} " Remap keys for gotos nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) " Use `[c` and `]c` to navigate diagnostics nmap [d (coc-diagnostic-prev) nmap ]d (coc-diagnostic-next) " Remap for rename current word nmap rn (coc-rename) " Remap for do codeAction of current line nmap ac (coc-codeaction) " Fix autofix problem of current line nmap qf (coc-fix-current) Plug 'itchyny/lightline.vim' if filereadable(expand("~/.vim/lightline.vim")) source ~/.vim/lightline.vim augroup ale-statusline autocmd! autocmd User ALELint call lightline#update() augroup END endif function! LightlineReload() call lightline#init() call lightline#colorscheme() call lightline#update() endfunction Plug 'lifepillar/vim-gruvbox8' Plug 'SirVer/ultisnips' let g:UltiSnipsExpandTrigger="" let g:UltiSnipsJumpForwardTrigger="" let g:UltiSnipsJumpBackwardTrigger="" Plug 'pangloss/vim-javascript' Plug 'MaxMEllon/vim-jsx-pretty' Plug 'sheerun/vim-polyglot' let g:polyglot_disabled = ['javascript', 'jsx', 'latex'] Plug 'lervag/vimtex', { 'for': 'tex' } let g:vimtex_view_method = 'zathura' Plug 'wellle/targets.vim' Plug 'janko-m/vim-test' nmap t :TestNearest nmap T :TestFile let test#strategy = "vimterminal" " vim 8 plugins if v:version >= 800 Plug 'ludovicchabant/vim-gutentags' let g:gutentags_cache_dir="~/.tags" let g:gutentags_file_list_command = { \ 'markers': { \ '.git': 'git ls-files', \ '.hg': 'hg files', \ }, \ } endif " debug Plug 'tweekmonster/startuptime.vim' call plug#end() " }}} " Local .vimrc {{{ set exrc set secure " }}} " Text Formatting {{{ set list if v:version > 800 set breakindent endif set showbreak=↳ set textwidth=0 set colorcolumn=+1 set nojoinspaces set tabstop=4 set softtabstop=4 set shiftwidth=4 set expandtab " }}} " Folding {{{ set foldmethod=indent set foldlevelstart=1 set nofoldenable " }}} " Diff settings {{{ set fillchars+=diff:⣿ set diffopt=vertical set diffopt+=filler set diffopt+=iwhite " }}} " {{{ Undo set undodir=~/.vim/undos,/tmp set undofile set undolevels=1000 set undoreload=10000 " }}} " Visual Setting {{{ " set cursorline set background=dark colorscheme gruvbox8 set number " }}} " GUI Settings {{{ if has("gui_running") "disable menu, toolsbar, scrollbar set guioptions -=m set guioptions -=T set guioptions -=r endif " }}} " Key mappings {{{ "" fast escaping inoremap jk "" delete buffer noremap d :bd "" indent visual selected code without unselecting and going back to normal mode vnoremap > >gv vnoremap < ss :mks! ' . g:sessions_dir . '/*.vim' exec 'nnoremap sr :so ' . g:sessions_dir. '/*.vim' "" fast editing of config nnoremap ev :e $MYVIMRC "" cheatsheet nnoremap ec :e ~/.vim/cheatsheet.md " debugging, use leader-DD to start, do a slow action, then leader-DQ to " finish. Your output will be in profile.log nnoremap DD :exe ":profile start profile.log":exe ":profile func *":exe ":profile file *" nnoremap DQ :exe ":profile pause":noautocmd qall! "" abbreviations cnoreabbrev W! w! cnoreabbrev Q! q! cnoreabbrev Qall! qall! cnoreabbrev Wq wq cnoreabbrev Wa wa cnoreabbrev wQ wq cnoreabbrev WQ wq cnoreabbrev W w cnoreabbrev Q q cnoreabbrev Qall qall iab xnow =strftime("%Y-%m-%d %H:%M") " }}} " Autocmd Rules {{{ augroup general autocmd! "" do syntax highlight syncing from start autocmd BufEnter * :syntax sync fromstart augroup END "" txt, mail, tex augroup text autocmd! autocmd FileType text,markdown,mail,tex set wrap wm=2 nocindent spell textwidth=79 augroup END augroup markdown autocmd! autocmd FileType markdown set wrap wm=2 nocindent spell textwidth=79 augroup END "" Web augroup web autocmd! autocmd FileType javascript map r :TernRename autocmd BufRead,BufNewFile *.template set filetype=html.mustache syntax=mustache autocmd BufRead,BufNewFile *.html set spell augroup END "" Help augroup HelpInTabs autocmd! autocmd BufEnter *.txt call HelpInNewTab() augroup END "Only apply to help files... function! HelpInNewTab () if &buftype == 'help' "Convert the help window to a tab... execute "normal \T" endif endfunction " Reloading vim augroup VimReload autocmd! autocmd BufWritePost $MYVIMRC source $MYVIMRC | call LightlineReload() augroup END " }}}