From f47cd29f54a0c44dd411d03376a0dca52807262b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Uruba?= Date: Fri, 18 Dec 2020 21:27:24 +0100 Subject: [PATCH] add vim --- vim/.vimrc | 161 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 vim/.vimrc diff --git a/vim/.vimrc b/vim/.vimrc new file mode 100644 index 0000000..2301279 --- /dev/null +++ b/vim/.vimrc @@ -0,0 +1,161 @@ +" Plugins +call plug#begin('~/.vim/plugged') + +" Themes, visual elements +Plug 'dracula/vim', { 'as': 'dracula' } +Plug 'itchyny/lightline.vim' + +" Symlink +Plug 'aymericbeaumet/vim-symlink' + +" Code completion +Plug 'neoclide/coc.nvim', { 'branch': 'release' } +Plug 'phpactor/phpactor', {'for': 'php', 'branch': 'master', 'do': 'composer install --no-dev -o'} + +" Debugging +Plug 'puremourning/vimspector' + +" Git +Plug 'tpope/vim-fugitive', { 'tag': 'v3.2' } +Plug 'airblade/vim-gitgutter' + +" NERDTree +Plug 'preservim/nerdtree' +Plug 'Xuyuanp/nerdtree-git-plugin' + +call plug#end() + +syntax on + +colorscheme dracula + +" Indentation +filetype plugin indent on +set expandtab +set tabstop=4 +set shiftwidth=4 +set autoindent +set smartindent + +" Lightline +set laststatus=2 +set cmdheight=2 + +" Line numbers +set number +set relativenumber + +" Undo +set undofile +set undodir=~/.vim/undo +set undolevels=1024 + +" Backup +set nobackup +set nowritebackup + +" updatetime +set updatetime=450 + +" NERDTree +autocmd StdinReadPre * let s:std_in=1 +autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif +autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif + +map :NERDTreeToggle + +" Code completion +set hidden +set shortmess+=c +set signcolumn=yes + +inoremap + \ pumvisible() ? "\" : + \ check_back_space() ? "\" : + \ coc#refresh() +inoremap pumvisible() ? "\" : "\" + +function! s:check_back_space() abort + let col = col('.') - 1 + return !col || getline('.')[col - 1] =~# '\s' +endfunction + +if has('nvim') + inoremap coc#refresh() +else + inoremap coc#refresh() +endif + +inoremap pumvisible() ? coc#_select_confirm() + \: "\u\\=coc#on_enter()\" + +nmap [g (coc-diagnostic-prev) +nmap ]g (coc-diagnostic-next) + +nmap gd (coc-definition) +nmap gy (coc-type-definition) +nmap gi (coc-implementation) +nmap gr (coc-references) + +nnoremap K :call show_documentation() + +function! s:show_documentation() + if (index(['vim','help'], &filetype) >= 0) + execute 'h '.expand('') + elseif (coc#rpc#ready()) + call CocActionAsync('doHover') + else + execute '!' . &keywordprg . " " . expand('') + endif +endfunction + +autocmd CursorHold * silent call CocActionAsync('highlight') + +nmap rn (coc-rename) +xmap f (coc-format-selected) +nmap f (coc-format-selected) +xmap a (coc-codeaction-selected) +nmap a (coc-codeaction-selected) +nmap ac (coc-codeaction) +nmap qf (coc-fix-current) + +xmap if (coc-funcobj-i) +omap if (coc-funcobj-i) +xmap af (coc-funcobj-a) +omap af (coc-funcobj-a) +xmap ic (coc-classobj-i) +omap ic (coc-classobj-i) +xmap ac (coc-classobj-a) +omap ac (coc-classobj-a) + +if has('nvim-0.4.0') || has('patch-8.2.0750') + nnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" + nnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" + inoremap coc#float#has_scroll() ? "\=coc#float#scroll(1)\" : "\" + inoremap coc#float#has_scroll() ? "\=coc#float#scroll(0)\" : "\" + vnoremap coc#float#has_scroll() ? coc#float#scroll(1) : "\" + vnoremap coc#float#has_scroll() ? coc#float#scroll(0) : "\" +endif + +if has('nvim') + vnoremap coc#float#has_scroll() ? coc#float#nvim_scroll(1, 1) : "\" + vnoremap coc#float#has_scroll() ? coc#float#nvim_scroll(0, 1) : "\" +endif + +nmap (coc-range-select) +xmap (coc-range-select) + +command! -nargs=0 Format :call CocAction('format') +command! -nargs=? Fold :call CocAction('fold', ) +command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') + +nnoremap a :CocList diagnostics +nnoremap e :CocList extensions +nnoremap c :CocList commands +nnoremap o :CocList outline +nnoremap s :CocList -I symbols +nnoremap j :CocNext +nnoremap k :CocPrev +nnoremap p :CocListResume + +set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')}