7 "In order to display chinese in GBK
8 set fileencodings=utf-8,gbk
20 set backspace=indent,eol,start
32 set laststatus=2 "always show status line
45 set undodir=~/.cache/nvim/undodir
48 " auto added comment leader, detail for :h formatoptions
49 set formatoptions+=/ro
52 "setting gf (go file) path
53 "change kernel version to your version, for kernel development
54 set path=.,lib;,include;,includes;
55 set path+=/usr/include,/usr/include/c++/*
56 set path+=/usr/local/include
60 highlight ColorColumn ctermbg=0 guibg=lightgrey
62 " Writes to the unnamed register also writes to the * and + registers. This
63 " makes it easy to interact with the system clipboard
64 if has ('unnamedplus')
65 set clipboard=unnamedplus
71 Plug 'morhetz/gruvbox'
72 Plug 'lukas-reineke/indent-blankline.nvim'
73 Plug 'christoomey/vim-tmux-navigator'
74 Plug 'vim-airline/vim-airline'
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 'majutsushi/tagbar'
84 Plug 'MeanderingProgrammer/render-markdown.nvim'
85 Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && npx --yes yarn install' }
87 Plug 'tpope/vim-fugitive'
88 Plug 'lewis6991/gitsigns.nvim'
89 Plug 'kdheepak/lazygit.nvim'
91 Plug 'neoclide/coc.nvim', {'branch': 'release'}
93 Plug 'nvim-treesitter/nvim-treesitter'
95 Plug 'zbirenbaum/copilot.lua'
97 " execute 'source' fnameescape(expand('<sfile>:p:h') . '/opt/avante.vim')
98 " execute 'source' fnameescape(expand('<sfile>:p:h') . '/opt/leetcode.vim')
102 "----------------------
104 "----------------------
105 if has_key(plugs, 'gruvbox')
109 "----------------------
110 " vim-airline setting
111 "----------------------
112 if has_key(plugs, 'vim-airline')
113 "tabline with airline
114 ":help airline-tabline
115 let g:airline#extensions#tabline#enabled = 1
116 let g:airline#extensions#tabline#show_buffers = 0
117 let g:airline#extensions#tabline#show_splits = 0
118 let g:airline#extensions#tabline#show_tab_count = 0
119 let g:airline#extensions#tabline#show_close_button = 0
122 "----------------------
124 "----------------------
125 if has_key(plugs, 'fzf.vim')
126 function! s:ProjectRg(query) abort
127 let dir = expand('%:p:h')
128 let dir = isdirectory(dir) ? dir : getcwd()
129 let root = systemlist('git -C ' . shellescape(dir) . ' rev-parse --show-toplevel 2>/dev/null')
130 if v:shell_error || empty(root)
131 echoerr 'Not in a Git repository'
135 \ 'rg --hidden --glob "!.git" --column --line-number --no-heading --color=always --smart-case -- ',
136 \ a:query, fzf#vim#with_preview({'dir': root[0]}))
139 command! -nargs=* ProjectRg call <SID>ProjectRg(<q-args>)
140 nnoremap <C-p> :GFiles<CR>
141 nnoremap <C-f> :ProjectRg<CR>
144 "----------------------
146 "----------------------
147 if has_key(plugs, 'undotree')
148 nnoremap <leader>u :UndotreeToggle<CR>
151 "----------------------
153 "----------------------
154 if has_key(plugs, 'nerdtree')
155 autocmd StdinReadPre * let s:std_in=1
156 "when vim openning with no file, open NERDTree
157 autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
158 nnoremap <leader>n :NERDTreeToggle<CR>
161 "----------------------
163 "----------------------
164 if has_key(plugs, 'tagbar')
165 nnoremap <leader>t :TagbarToggle<CR>
168 "----------------------
170 "----------------------
171 if has_key(plugs, "coc.nvim")
172 " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list.
173 nmap <silent> <leader>g[ <Plug>(coc-diagnostic-prev)
174 nmap <silent> <leader>g] <Plug>(coc-diagnostic-next)
176 " GoTo code navigation.
177 nmap <silent> <leader>gd <Plug>(coc-definition)
178 nmap <silent> <leader>gr <Plug>(coc-references)
179 nmap <silent> <leader>gy <Plug>(coc-type-definition)
180 nmap <silent> <leader>gi <Plug>(coc-implementation)
182 " Highlight the symbol and its references when holding the cursor.
183 autocmd CursorHold * silent call CocActionAsync('highlight')
186 nmap <leader>rn <Plug>(coc-rename)
188 " Formatting selected code.
189 xmap <leader>f <Plug>(coc-format-selected)
190 nmap <leader>f <Plug>(coc-format-selected)
192 " Apply AutoFix to problem on the current line.
193 nmap <leader>qf <Plug>(coc-fix-current)
196 nmap <leader>gh :CocCommand clangd.switchSourceHeader<CR>
198 " Use K to show documentation in preview window.
199 nnoremap <silent> <leader>h :call <SID>show_documentation()<CR>
200 function! s:show_documentation()
201 if (index(['vim','help'], &filetype) >= 0)
202 execute 'h '.expand('<cword>')
203 elseif (coc#rpc#ready())
204 call CocActionAsync('doHover')
206 execute '!' . &keywordprg . " " . expand('<cword>')
210 let g:coc_default_semantic_highlight_groups = 1
211 let g:coc_global_extensions = [
226 "----------------------
227 " nvim-treesitter setting
228 "----------------------
229 if has_key(plugs, 'nvim-treesitter')
230 lua require('plugin-config/nvim-treesitter')
233 if has_key(plugs, 'indent-blankline.nvim')
234 lua require('ibl').setup({ scope = { enabled = false } })
237 if has_key(plugs, 'gitsigns.nvim')
238 lua require('plugin-config/gitsigns')
241 if has_key(plugs, 'lazygit.nvim')
242 nnoremap <silent> <leader>lg :LazyGit<CR>
245 "----------------------
246 " copilot.lua setting
247 "----------------------
248 if has_key(plugs, 'copilot.lua')
249 lua require('plugin-config/copilot')
252 "----------------------
253 " avante.nvim setting
254 "----------------------
255 if has_key(plugs, 'avante.nvim')
256 lua require('plugin-config/avante')
259 "----------------------
260 " leetcode.nvim setting
261 "----------------------
262 if has_key(plugs, 'leetcode.nvim')
263 lua require('plugin-config/leetcode')
266 nnoremap J :tabprevious<CR>
267 nnoremap K :tabnext<CR>
268 nnoremap <leader>J :tabmove -1<CR>
269 nnoremap <leader>K :tabmove +1<CR>
270 nnoremap <leader>" viw<esc>a"<esc>bi"<esc>lel
271 nnoremap <leader>' viw<esc>a'<esc>bi'<esc>lel
272 nnoremap <silent> <Leader>+ :resize +5<CR>
273 nnoremap <silent> <Leader>- :resize -5<CR>
274 nnoremap <silent> <Leader>v+ :vertical resize +5<CR>
275 nnoremap <silent> <Leader>v- :vertical resize -5<CR>
277 " shortcut for folding
278 nnoremap <silent> <Leader>fi :set foldmethod=indent<CR>
279 nnoremap <silent> <Leader>fd :set foldmethod=manual<CR>ggVGzD
285 "HighLight trailing whitespace"
286 highlight ExtraWhitespace ctermbg=red guibg=red
287 match ExtraWhitespace /\s\+$/