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)
185 " Apply AutoFix to problem on the current line.
186 nmap <leader>qf <Plug>(coc-fix-current)
189 nmap <leader>gh :CocCommand clangd.switchSourceHeader<CR>
191 " Use K to show documentation in preview window.
192 nnoremap <silent> <leader>h :call <SID>show_documentation()<CR>
193 function! s:show_documentation()
194 if (index(['vim','help'], &filetype) >= 0)
195 execute 'h '.expand('<cword>')
196 elseif (coc#rpc#ready())
197 call CocActionAsync('doHover')
199 execute '!' . &keywordprg . " " . expand('<cword>')
203 let g:coc_default_semantic_highlight_groups = 1
204 let g:coc_global_extensions = [
216 "----------------------
217 " nvim-treesitter setting
218 "----------------------
219 if has_key(plugs, 'nvim-treesitter')
220 lua require('plugin-config/nvim-treesitter')
223 set foldexpr=nvim_treesitter#foldexpr()
228 nnoremap J :tabprevious<CR>
229 nnoremap K :tabnext<CR>
230 nnoremap <leader>J :tabmove -1<CR>
231 nnoremap <leader>K :tabmove +1<CR>
232 nnoremap <C-h> <C-w>h
233 nnoremap <C-j> <C-w>j
234 nnoremap <C-k> <C-w>k
235 nnoremap <C-l> <C-w>l
236 nnoremap <leader>" viw<esc>a"<esc>bi"<esc>lel
237 nnoremap <leader>' viw<esc>a'<esc>bi'<esc>lel
238 nnoremap <silent> <Leader>+ :resize +5<CR>
239 nnoremap <silent> <Leader>- :resize -5<CR>
240 nnoremap <silent> <Leader>v+ :vertical resize +5<CR>
241 nnoremap <silent> <Leader>v- :vertical resize -5<CR>
244 "HighLight trailing whitespace"
245 highlight ExtraWhitespace ctermbg=red guibg=red
246 match ExtraWhitespace /\s\+$/
248 "use powerline-vim for normal use
249 "instead of installing for both user and root
250 "run to install lib: pip3 install --user powerline-status
251 "python3 from powerline.vim import setup as powerline_setup
252 "python3 powerline_setup()
253 "python3 del powerline_setup