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
50 " auto added comment leader, detail for :h formatoptions
51 set formatoptions+=/ro
54 "setting gf (go file) path
55 "change kernel version to your version, for kernel development
56 set path=.,lib;,include;,includes;
57 set path+=/usr/include,/usr/include/c++/*
58 set path+=/usr/local/include
62 highlight ColorColumn ctermbg=0 guibg=lightgrey
64 " Writes to the unnamed register also writes to the * and + registers. This
65 " makes it easy to interact with the system clipboard
66 if has ('unnamedplus')
67 set clipboard=unnamedplus
73 Plug 'morhetz/gruvbox'
74 Plug 'Yggdroot/indentLine'
75 Plug 'christoomey/vim-tmux-navigator'
76 Plug 'vim-airline/vim-airline'
78 Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
79 Plug 'junegunn/fzf.vim'
80 Plug 'ludovicchabant/vim-gutentags'
82 Plug 'mbbill/undotree'
83 Plug 'preservim/nerdtree'
84 Plug 'majutsushi/tagbar'
86 Plug 'plasticboy/vim-markdown'
88 Plug 'tpope/vim-fugitive'
89 Plug 'airblade/vim-gitgutter'
90 Plug 'kdheepak/lazygit.nvim'
92 Plug 'neoclide/coc.nvim', {'branch': 'release'}
94 Plug 'nvim-treesitter/nvim-treesitter'
97 "" avante and its dependents
99 Plug 'nvim-lua/plenary.nvim'
100 Plug 'MunifTanjim/nui.nvim'
101 Plug 'MeanderingProgrammer/render-markdown.nvim'
104 Plug 'hrsh7th/nvim-cmp'
105 Plug 'nvim-tree/nvim-web-devicons' "or Plug 'echasnovski/mini.icons'
106 Plug 'HakonHarnes/img-clip.nvim'
107 Plug 'zbirenbaum/copilot.lua'
108 Plug 'stevearc/dressing.nvim' " for enhanced input UI
109 Plug 'folke/snacks.nvim' " for modern input UI
111 " Yay, pass source=true if you want to build from source
112 Plug 'yetone/avante.nvim', { 'branch': 'main', 'do': 'make' }
118 "----------------------
120 "----------------------
121 if has_key(plugs, 'gruvbox')
125 "----------------------
126 " vim-airline setting
127 "----------------------
128 if has_key(plugs, 'vim-airline')
129 "tabline with airline
130 ":help airline-tabline
131 let g:airline#extensions#tabline#enabled = 1
132 let g:airline#extensions#tabline#show_buffers = 0
133 let g:airline#extensions#tabline#show_splits = 0
134 let g:airline#extensions#tabline#show_tab_count = 0
135 let g:airline#extensions#tabline#show_close_button = 0
138 "----------------------
140 "----------------------
141 if has_key(plugs, 'fzf.vim')
143 nnoremap <C-p> :GFiles<CR>
144 "as default <C-f>/<C-b> pair used to page down/up entire page
145 nnoremap <C-f> :Tags<CR>
148 "----------------------
150 "----------------------
151 if has_key(plugs, 'undotree')
152 nnoremap <leader>u :UndotreeToggle<CR>
155 "----------------------
157 "----------------------
158 if has_key(plugs, 'nerdtree')
159 autocmd StdinReadPre * let s:std_in=1
160 "when vim openning with no file, open NERDTree
161 autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
162 nnoremap <leader>n :NERDTreeToggle<CR>
165 "----------------------
167 "----------------------
168 if has_key(plugs, 'tagbar')
169 nnoremap <leader>t :TagbarToggle<CR>
172 "----------------------
174 "----------------------
175 if has_key(plugs, "coc.nvim")
176 " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list.
177 nmap <silent> <leader>g[ <Plug>(coc-diagnostic-prev)
178 nmap <silent> <leader>g] <Plug>(coc-diagnostic-next)
180 " GoTo code navigation.
181 nmap <silent> <leader>gd <Plug>(coc-definition)
182 nmap <silent> <leader>gr <Plug>(coc-references)
183 nmap <silent> <leader>gy <Plug>(coc-type-definition)
184 nmap <silent> <leader>gi <Plug>(coc-implementation)
186 " Highlight the symbol and its references when holding the cursor.
187 autocmd CursorHold * silent call CocActionAsync('highlight')
190 nmap <leader>rn <Plug>(coc-rename)
192 " Formatting selected code.
193 xmap <leader>f <Plug>(coc-format-selected)
194 nmap <leader>f <Plug>(coc-format-selected)
196 " Apply AutoFix to problem on the current line.
197 nmap <leader>qf <Plug>(coc-fix-current)
200 nmap <leader>gh :CocCommand clangd.switchSourceHeader<CR>
202 " Use K to show documentation in preview window.
203 nnoremap <silent> <leader>h :call <SID>show_documentation()<CR>
204 function! s:show_documentation()
205 if (index(['vim','help'], &filetype) >= 0)
206 execute 'h '.expand('<cword>')
207 elseif (coc#rpc#ready())
208 call CocActionAsync('doHover')
210 execute '!' . &keywordprg . " " . expand('<cword>')
214 let g:coc_default_semantic_highlight_groups = 1
215 let g:coc_global_extensions = [
230 "----------------------
231 " nvim-treesitter setting
232 "----------------------
233 if has_key(plugs, 'nvim-treesitter')
234 lua require('plugin-config/nvim-treesitter')
237 set foldmethod=indent
238 set foldexpr=nvim_treesitter#foldexpr()
242 "----------------------
243 " avante.nvim setting
244 "----------------------
245 if has_key(plugs, 'avante.nvim')
246 lua require('plugin-config/avante')
249 nnoremap J :tabprevious<CR>
250 nnoremap K :tabnext<CR>
251 nnoremap <leader>J :tabmove -1<CR>
252 nnoremap <leader>K :tabmove +1<CR>
253 nnoremap <C-h> <C-w>h
254 nnoremap <C-j> <C-w>j
255 nnoremap <C-k> <C-w>k
256 nnoremap <C-l> <C-w>l
257 nnoremap <leader>" viw<esc>a"<esc>bi"<esc>lel
258 nnoremap <leader>' viw<esc>a'<esc>bi'<esc>lel
259 nnoremap <silent> <Leader>+ :resize +5<CR>
260 nnoremap <silent> <Leader>- :resize -5<CR>
261 nnoremap <silent> <Leader>v+ :vertical resize +5<CR>
262 nnoremap <silent> <Leader>v- :vertical resize -5<CR>
264 " shortcut for folding
265 nnoremap <silent> <Leader>fi :set foldmethod=indent<CR>
266 nnoremap <silent> <Leader>fd :set foldmethod=manual<CR>ggVGzD
272 "HighLight trailing whitespace"
273 highlight ExtraWhitespace ctermbg=red guibg=red
274 match ExtraWhitespace /\s\+$/
276 "use powerline-vim for normal use
277 "instead of installing for both user and root
278 "run to install lib: pip3 install --user powerline-status
279 "python3 from powerline.vim import setup as powerline_setup
280 "python3 powerline_setup()
281 "python3 del powerline_setup