" basic settings set ts=4 set sw=4 set cc=120 set expandtab set nu set hidden set list set autoindent set confirm set noundofile set nobackup set nowritebackup set hlsearch set noswapfile set ignorecase set smarttab set smartindent set cursorline set incsearch set signcolumn=yes set laststatus=2 set fillchars=vert:\ ,fold:- set clipboard=unnamedplus " system clipboard as default register. for vim to work need installing gvim package filetype plugin indent on syntax on au! BufWritePost $MYVIMRC source % cnoremap cnoremap cnoremap cnoremap cnoremap cnoremap cnoremap inoremap inoremap inoremap inoremap inoremap inoremap inoremap noremap noremap noremap noremap vnoremap p pgvy nnoremap q :qall nnoremap 1 :b1 nnoremap 2 :b2 nnoremap 3 :b3 nnoremap 4 :b4 nnoremap 5 :b5 nnoremap w :w nnoremap :noh nmap "" ysiW" nmap '' ysiW' nmap " ysiw" nmap ' ysiw' nmap `` ysiW` nmap ` ysiw` inoremap nmap ss :syntax sync fromstart " trailing spaces highlight ExtraWhitespace ctermbg=red guibg=red au ColorScheme * highlight ExtraWhitespace ctermbg=red guibg=red au Syntax * match ExtraWhitespace /\s\+$/ nnoremap es :%s/\s\+$//g " auto install vim-plug if has('nvim') if has('win32') let vim_plug_path = $LOCALAPPDATA . "/nvim/autoload/plug.vim" else let vim_plug_path = expand("~/.config/nvim/autoload/plug.vim") endif else let vim_plug_path = expand("~/.vim/autoload/plug.vim") set listchars=eol:\ ,tab:>\ ,trail:~,extends:>,precedes:< endif let vim_plug_just_installed = 0 if !filereadable(vim_plug_path) echo "Installing vim-plug..." :exe "!curl -fLo " . vim_plug_path . " --create-dirs https://gitee.com/klesh/vim-plug/raw/master/plug.vim" let vim_plug_just_installed = 1 echo "vim-plug installed" endif call plug#begin('~/.vim/plugged') Plug 'editorconfig/editorconfig-vim' Plug 'tpope/vim-surround' Plug 'jiangmiao/auto-pairs' Plug 'preservim/nerdtree', { 'on': 'NERDTreeToggle' } Plug 'posva/vim-vue', { 'for': 'vue' } Plug 'tpope/vim-repeat' if $VIM_MODE == 'enhanced' Plug 'neoclide/coc.nvim', {'branch': 'release'} Plug 'puremourning/vimspector' else Plug 'Vimjas/vim-python-pep8-indent', { 'for': 'python' } endif Plug 'liuchengxu/eleline.vim' Plug 'tpope/vim-fugitive' " git 功能 Plug 'scrooloose/nerdcommenter' Plug 'mhinz/vim-grepper', { 'on': ['Grepper', '(GrepperOperator)'] } Plug 'morhetz/gruvbox' Plug 'dag/vim-fish', { 'for': 'fish' } Plug 'chrisbra/Colorizer' Plug 'alvan/vim-closetag', { 'for': ['vue', 'html', 'xml'] } "Plug 'airblade/vim-gitgutter' Plug 'plasticboy/vim-markdown', { 'for': 'markdown' } Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } Plug 'junegunn/fzf.vim' call plug#end() " ==== vim-markdown configuration ==== let g:vim_markdown_folding_disabled = 1 " ==== vim-closetag configuration ==== let g:closetag_filetypes = 'html,xhtml,phtml,vue' if $VIM_MODE == 'enhanced' " ==== coc configuration ==== let g:coc_global_extensions = [ \ 'coc-diagnostic', \ 'coc-json', \ 'coc-vetur', \ 'coc-tsserver', \ 'coc-eslint', \ 'coc-clangd' \ ] "let g:coc_disable_startup_warning = 1 set statusline^=%{coc#status()} nmap gd (coc-definition) nmap gy (coc-type-definition) nmap gi (coc-implementation) nmap gr (coc-references) xmap fs (coc-format-selected) nmap fs (coc-format-selected) nmap fd (coc-format) nmap rn (coc-rename) nmap ne (coc-diagnostic-next-error) nmap pe (coc-diagnostic-prev-error) nmap oi :CocInfo nmap ol :CocList nmap olr :CocListResume nmap od :call CocAction('doHover') nmap ol (coc-openlink) nmap oc :CocCommand autocmd BufEnter,BufRead,BufNewFile *.js set syntax=typescript " ==== vimspector configuration ==== let g:vimspector_enable_mappings = 'VISUAL_STUDIO' let g:vimspector_install_gadgets = [ 'debugpy', 'vscode-cpptools' ] endif " ==== auto-pairs configuration ==== nmap ap :call AutoPairsToggle() let g:AutoPairsShortcutToggle = '' " ==== grepper configuration ==== " nnoremap sg :Grepper -tool git nnoremap sc :Grepper -tool grep nnoremap sa :Grepper -tool ag " ==== quickfix configuration ==== nnoremap j :cn nnoremap k :cp " ==== NERDTree configuration ==== nnoremap fe :NERDTreeToggle " ==== fugitive configuration ==== nnoremap gs :Gstatus nnoremap gc :Gcommit nnoremap gp :Gpush nnoremap gg :Gpull nnoremap gd :Gdiff nnoremap gb :Gblame nnoremap gl :Glog nnoremap gms :Gvdiffsplit! nnoremap gmh :diffget //2 nnoremap gml :diffget //3 nnoremap gsc :exec "!git switch -c " . input("Enter new branch name:") " ==== ctrlp configuration ==== "let g:ctrlp_user_command = ['.git', 'git ls-files -co --exclude-standard'] " ==== fzf configuration ==== " enable for fzf let g:fugitive_no_maps=1 nnoremap :FZF nnoremap gco :call fzf#run({'source': 'git branch \| cut -c 3-; git tag -l', 'sink': '!git checkout'}) nnoremap gm :call fzf#run({'source': 'git branch \| cut -c 3-', 'sink': '!git merge'}) " ==== gruvbox configuration ==== color gruvbox set background=dark highlight Normal ctermbg=None " ==== NERDCommenter for vue ==== let g:ft = '' fu! NERDCommenter_before() if &ft == 'vue' let g:ft = 'vue' let stack = synstack(line('.'), col('.')) if len(stack) > 0 let syn = synIDattr((stack)[0], 'name') if len(syn) > 0 let syn = tolower(syn) exe 'setf '.syn endif endif endif endfu fu! NERDCommenter_after() if g:ft == 'vue' setf vue g:ft endif endfu