6 set t_Co=256 "terminal color
 
   8 "set term=xterm-256color
 
  10 "In order to display chinese in GBK
 
  11 let &termencoding=&encoding
 
  12 set fileencodings=utf-8,gbk
 
  15 set encoding=utf-8 "required for ycm
 
  22 set backspace=indent,eol,start
 
  34 set laststatus=2 "always show status line
 
  47 set undodir=~/.cache/nvim/undodir
 
  51 "setting gf (go file) path
 
  52 "change kernel version to your version, for kernel development
 
  53 set path=.,lib;,include;,includes;
 
  54 set path+=/usr/include,/usr/include/c++/*
 
  55 set path+=/usr/local/include
 
  59 highlight ColorColumn ctermbg=0 guibg=lightgrey
 
  61 " Writes to the unnamed register also writes to the * and + registers. This
 
  62 " makes it easy to interact with the system clipboard
 
  63 if has ('unnamedplus')
 
  64     set clipboard=unnamedplus
 
  70     Plug 'morhetz/gruvbox'
 
  71     Plug 'Yggdroot/indentLine'
 
  72     Plug 'christoomey/vim-tmux-navigator'
 
  73     Plug 'vim-airline/vim-airline'
 
  74     "Plug 'vim-airline/vim-airline-themes'
 
  76     Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
 
  77     Plug 'junegunn/fzf.vim'
 
  78     Plug 'ludovicchabant/vim-gutentags'
 
  80     Plug 'mbbill/undotree'
 
  81     Plug 'preservim/nerdtree'
 
  82     Plug 'plasticboy/vim-markdown'
 
  84     Plug 'tpope/vim-fugitive'
 
  85     Plug 'kdheepak/lazygit.nvim'
 
  87     "Plug 'ycm-core/YouCompleteMe'
 
  88     "Plug 'rhysd/vim-clang-format'
 
  90     Plug 'neoclide/coc.nvim'
 
  92     Plug 'nvim-treesitter/nvim-treesitter'
 
  93     "Plug 'mfussenegger/nvim-dap'
 
  94     "Plug 'puremourning/vimspector'
 
  97 "----------------------
 
  99 "----------------------
 
 100 if has_key(plugs, 'gruvbox')
 
 104 "----------------------
 
 105 " vim-airline setting
 
 106 "----------------------
 
 107 if has_key(plugs, 'vim-airline')
 
 108     "tabline with airline
 
 109     ":help airline-tabline
 
 110     let g:airline#extensions#tabline#enabled = 1
 
 111     let g:airline#extensions#tabline#show_buffers = 0
 
 112     let g:airline#extensions#tabline#show_splits = 0
 
 113     let g:airline#extensions#tabline#show_tab_count = 0
 
 114     let g:airline#extensions#tabline#show_close_button = 0
 
 117 "----------------------
 
 119 "----------------------
 
 120 if has_key(plugs, 'fzf.vim')
 
 122     nnoremap <C-p> :GFiles<CR>
 
 123     "as default <C-f>/<C-b> pair used to page down/up entire page
 
 124     nnoremap <C-f> :Tags<CR>
 
 127 "----------------------
 
 129 "----------------------
 
 130 if has_key(plugs, 'undotree')
 
 131     nnoremap <leader>u :UndotreeShow<CR>
 
 134 "----------------------
 
 136 "----------------------
 
 137 if has_key(plugs, 'nerdtree')
 
 138     autocmd StdinReadPre * let s:std_in=1
 
 139     "when vim openning with no file, open NERDTree
 
 140     autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
 
 141     nnoremap <leader>n :NERDTreeToggle<CR>
 
 144 "----------------------
 
 145 " YouCompleteMe setting
 
 146 "----------------------
 
 147 if has_key(plugs, 'YouCompleteMe')
 
 148     let g:ycm_global_ycm_extra_conf = '~/.config/nvim/ycm_extra_conf.py'
 
 149     let g:ycm_confirm_extra_conf = 0
 
 150     let g:ycm_enable_diagnostic_signs = 0
 
 151     let g:ycm_always_populate_location_list = 1
 
 152     "let g:ycm_show_diagnostics_ui = 0
 
 153     let g:ycm_add_preview_to_completeopt = 1
 
 154     let g:ycm_autoclose_preview_window_after_completion = 1
 
 155     let g:ycm_auto_hover = 'no'
 
 157     nnoremap <silent> <leader>gd :YcmCompleter GoTo<CR>
 
 158     nnoremap <silent> <leader>gr :YcmCompleter GoToReferences<CR>
 
 161 "----------------------
 
 163 "----------------------
 
 164 if has_key(plugs, "coc.nvim")
 
 165     " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list.
 
 166     nmap <silent> <leader>g[ <Plug>(coc-diagnostic-prev)
 
 167     nmap <silent> <leader>g] <Plug>(coc-diagnostic-next)
 
 169     " GoTo code navigation.
 
 170     nmap <silent> <leader>gd <Plug>(coc-definition)
 
 171     nmap <silent> <leader>gr <Plug>(coc-references)
 
 172     nmap <silent> <leader>gy <Plug>(coc-type-definition)
 
 173     nmap <silent> <leader>gi <Plug>(coc-implementation)
 
 175     " Highlight the symbol and its references when holding the cursor.
 
 176     autocmd CursorHold * silent call CocActionAsync('highlight')
 
 179     nmap <leader>rn <Plug>(coc-rename)
 
 181     " Formatting selected code.
 
 182     xmap <leader>f  <Plug>(coc-format-selected)
 
 183     nmap <leader>f  <Plug>(coc-format-selected)
 
 186     nmap <leader>gh :CocCommand clangd.switchSourceHeader<CR>
 
 188     " Use K to show documentation in preview window.
 
 189     nnoremap <silent> <leader>h :call <SID>show_documentation()<CR>
 
 190     function! s:show_documentation()
 
 191       if (index(['vim','help'], &filetype) >= 0)
 
 192         execute 'h '.expand('<cword>')
 
 193       elseif (coc#rpc#ready())
 
 194         call CocActionAsync('doHover')
 
 196         execute '!' . &keywordprg . " " . expand('<cword>')
 
 201 "----------------------
 
 202 " nvim-treesitter setting
 
 203 "----------------------
 
 204 if has_key(plugs, 'nvim-treesitter')
 
 205     lua require('plugin-config/nvim-treesitter')
 
 209 nnoremap J :tabprevious<CR>
 
 210 nnoremap K :tabnext<CR>
 
 211 nnoremap <leader>J :tabmove -1<CR>
 
 212 nnoremap <leader>K :tabmove +1<CR>
 
 213 nnoremap <C-h> <C-w>h
 
 214 nnoremap <C-j> <C-w>j
 
 215 nnoremap <C-k> <C-w>k
 
 216 nnoremap <C-l> <C-w>l
 
 217 nnoremap <leader>" viw<esc>a"<esc>bi"<esc>lel
 
 218 nnoremap <leader>' viw<esc>a'<esc>bi'<esc>lel
 
 219 nnoremap <silent> <Leader>+ :resize +5<CR>
 
 220 nnoremap <silent> <Leader>- :resize -5<CR>
 
 221 nnoremap <silent> <Leader>v+ :vertical resize +5<CR>
 
 222 nnoremap <silent> <Leader>v- :vertical resize -5<CR>
 
 225 "HighLight trailing whitespace"
 
 226 highlight ExtraWhitespace ctermbg=red guibg=red
 
 227 match ExtraWhitespace /\s\+$/
 
 229 "use powerline-vim for normal use
 
 230 "instead of installing for both user and root
 
 231 "run to install lib: pip3 install --user powerline-status
 
 232 "python3 from powerline.vim import setup as powerline_setup
 
 233 "python3 powerline_setup()
 
 234 "python3 del powerline_setup