Xinqi Bao's Git

refactor(nvim): refresh editing and project workflows
[dotfiles.git] / .config / nvim / init.vim
index 92379df..ed35c32 100644 (file)
@@ -3,16 +3,14 @@ let mapleader=" "
 
 set background=dark
 set termguicolors
 
 set background=dark
 set termguicolors
-set t_Co=256 "terminal color
-set t_ut=""
-"set term=xterm-256color
 
 "In order to display chinese in GBK
 
 "In order to display chinese in GBK
-let &termencoding=&encoding
 set fileencodings=utf-8,gbk
 set fileformat=unix
 set fileencodings=utf-8,gbk
 set fileformat=unix
-set foldmethod=manual
-set encoding=utf-8 "required for ycm
+set foldmethod=indent
+set foldlevelstart=99
+set foldlevel=99
+set encoding=utf-8
 
 set tabstop=4
 set softtabstop=4
 
 set tabstop=4
 set softtabstop=4
@@ -47,6 +45,9 @@ set nowritebackup
 set undodir=~/.cache/nvim/undodir
 set undofile
 
 set undodir=~/.cache/nvim/undodir
 set undofile
 
+" auto added comment leader, detail for :h formatoptions
+set formatoptions+=/ro
+
 set tags=tags~;,tags~
 "setting gf (go file) path
 "change kernel version to your version, for kernel development
 set tags=tags~;,tags~
 "setting gf (go file) path
 "change kernel version to your version, for kernel development
@@ -68,10 +69,9 @@ endif
 
 call plug#begin()
     Plug 'morhetz/gruvbox'
 
 call plug#begin()
     Plug 'morhetz/gruvbox'
-    Plug 'Yggdroot/indentLine'
+    Plug 'lukas-reineke/indent-blankline.nvim'
     Plug 'christoomey/vim-tmux-navigator'
     Plug 'vim-airline/vim-airline'
     Plug 'christoomey/vim-tmux-navigator'
     Plug 'vim-airline/vim-airline'
-    "Plug 'vim-airline/vim-airline-themes'
 
     Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
     Plug 'junegunn/fzf.vim'
 
     Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
     Plug 'junegunn/fzf.vim'
@@ -79,19 +79,24 @@ call plug#begin()
 
     Plug 'mbbill/undotree'
     Plug 'preservim/nerdtree'
 
     Plug 'mbbill/undotree'
     Plug 'preservim/nerdtree'
-    Plug 'plasticboy/vim-markdown'
+    Plug 'majutsushi/tagbar'
+
+    Plug 'MeanderingProgrammer/render-markdown.nvim'
+    Plug 'iamcco/markdown-preview.nvim', { 'do': 'cd app && npx --yes yarn install' }
 
     Plug 'tpope/vim-fugitive'
 
     Plug 'tpope/vim-fugitive'
+    Plug 'lewis6991/gitsigns.nvim'
     Plug 'kdheepak/lazygit.nvim'
 
     Plug 'kdheepak/lazygit.nvim'
 
-    "Plug 'ycm-core/YouCompleteMe'
-    "Plug 'rhysd/vim-clang-format'
-
-    Plug 'neoclide/coc.nvim'
+    Plug 'neoclide/coc.nvim', {'branch': 'release'}
 
     Plug 'nvim-treesitter/nvim-treesitter'
 
     Plug 'nvim-treesitter/nvim-treesitter'
-    "Plug 'mfussenegger/nvim-dap'
-    "Plug 'puremourning/vimspector'
+
+    Plug 'zbirenbaum/copilot.lua'
+
+    " execute 'source' fnameescape(expand('<sfile>:p:h') . '/opt/avante.vim')
+    " execute 'source' fnameescape(expand('<sfile>:p:h') . '/opt/leetcode.vim')
+
 call plug#end()
 
 "----------------------
 call plug#end()
 
 "----------------------
@@ -118,17 +123,29 @@ endif
 " fzf.vim setting
 "----------------------
 if has_key(plugs, 'fzf.vim')
 " fzf.vim setting
 "----------------------
 if has_key(plugs, 'fzf.vim')
-    "mapping for fzf.vim
+    function! s:ProjectRg(query) abort
+        let dir = expand('%:p:h')
+        let dir = isdirectory(dir) ? dir : getcwd()
+        let root = systemlist('git -C ' . shellescape(dir) . ' rev-parse --show-toplevel 2>/dev/null')
+        if v:shell_error || empty(root)
+            echoerr 'Not in a Git repository'
+            return
+        endif
+        call fzf#vim#grep2(
+                    \ 'rg --hidden --glob "!.git" --column --line-number --no-heading --color=always --smart-case -- ',
+                    \ a:query, fzf#vim#with_preview({'dir': root[0]}))
+    endfunction
+
+    command! -nargs=* ProjectRg call <SID>ProjectRg(<q-args>)
     nnoremap <C-p> :GFiles<CR>
     nnoremap <C-p> :GFiles<CR>
-    "as default <C-f>/<C-b> pair used to page down/up entire page
-    nnoremap <C-f> :Tags<CR>
+    nnoremap <C-f> :ProjectRg<CR>
 endif
 
 "----------------------
 " undotree setting
 "----------------------
 if has_key(plugs, 'undotree')
 endif
 
 "----------------------
 " undotree setting
 "----------------------
 if has_key(plugs, 'undotree')
-    nnoremap <leader>u :UndotreeShow<CR>
+    nnoremap <leader>u :UndotreeToggle<CR>
 endif
 
 "----------------------
 endif
 
 "----------------------
@@ -142,20 +159,10 @@ if has_key(plugs, 'nerdtree')
 endif
 
 "----------------------
 endif
 
 "----------------------
-" YouCompleteMe setting
+" tagbar setting
 "----------------------
 "----------------------
-if has_key(plugs, 'YouCompleteMe')
-    let g:ycm_global_ycm_extra_conf = '~/.config/nvim/ycm_extra_conf.py'
-    let g:ycm_confirm_extra_conf = 0
-    let g:ycm_enable_diagnostic_signs = 0
-    let g:ycm_always_populate_location_list = 1
-    "let g:ycm_show_diagnostics_ui = 0
-    let g:ycm_add_preview_to_completeopt = 1
-    let g:ycm_autoclose_preview_window_after_completion = 1
-    let g:ycm_auto_hover = 'no'
-
-    nnoremap <silent> <leader>gd :YcmCompleter GoTo<CR>
-    nnoremap <silent> <leader>gr :YcmCompleter GoToReferences<CR>
+if has_key(plugs, 'tagbar')
+    nnoremap <leader>t :TagbarToggle<CR>
 endif
 
 "----------------------
 endif
 
 "----------------------
@@ -205,11 +212,14 @@ if has_key(plugs, "coc.nvim")
                 \'coc-marketplace',
                 \'coc-highlight',
                 \'coc-clangd',
                 \'coc-marketplace',
                 \'coc-highlight',
                 \'coc-clangd',
-                \'coc-jedi',
-                \'coc-vimlsp',
+                \'coc-pyright',
+                \'coc-lua',
                 \'coc-sh',
                 \'coc-sh',
+                \'coc-cmake',
+                \'coc-xmake',
                 \'coc-json',
                 \'coc-json',
-                \'coc-yaml'
+                \'coc-yaml',
+                \'coc-vimlsp',
                 \]
 endif
 
                 \]
 endif
 
@@ -220,15 +230,43 @@ if has_key(plugs, 'nvim-treesitter')
     lua require('plugin-config/nvim-treesitter')
 endif
 
     lua require('plugin-config/nvim-treesitter')
 endif
 
+if has_key(plugs, 'indent-blankline.nvim')
+    lua require('ibl').setup({ scope = { enabled = false } })
+endif
+
+if has_key(plugs, 'gitsigns.nvim')
+    lua require('plugin-config/gitsigns')
+endif
+
+if has_key(plugs, 'lazygit.nvim')
+    nnoremap <silent> <leader>lg :LazyGit<CR>
+endif
+
+"----------------------
+" copilot.lua setting
+"----------------------
+if has_key(plugs, 'copilot.lua')
+    lua require('plugin-config/copilot')
+endif
+
+"----------------------
+" avante.nvim setting
+"----------------------
+if has_key(plugs, 'avante.nvim')
+    lua require('plugin-config/avante')
+endif
+
+"----------------------
+" leetcode.nvim setting
+"----------------------
+if has_key(plugs, 'leetcode.nvim')
+    lua require('plugin-config/leetcode')
+endif
 
 nnoremap J :tabprevious<CR>
 nnoremap K :tabnext<CR>
 nnoremap <leader>J :tabmove -1<CR>
 nnoremap <leader>K :tabmove +1<CR>
 
 nnoremap J :tabprevious<CR>
 nnoremap K :tabnext<CR>
 nnoremap <leader>J :tabmove -1<CR>
 nnoremap <leader>K :tabmove +1<CR>
-nnoremap <C-h> <C-w>h
-nnoremap <C-j> <C-w>j
-nnoremap <C-k> <C-w>k
-nnoremap <C-l> <C-w>l
 nnoremap <leader>" viw<esc>a"<esc>bi"<esc>lel
 nnoremap <leader>' viw<esc>a'<esc>bi'<esc>lel
 nnoremap <silent> <Leader>+ :resize +5<CR>
 nnoremap <leader>" viw<esc>a"<esc>bi"<esc>lel
 nnoremap <leader>' viw<esc>a'<esc>bi'<esc>lel
 nnoremap <silent> <Leader>+ :resize +5<CR>
@@ -236,14 +274,14 @@ nnoremap <silent> <Leader>- :resize -5<CR>
 nnoremap <silent> <Leader>v+ :vertical resize +5<CR>
 nnoremap <silent> <Leader>v- :vertical resize -5<CR>
 
 nnoremap <silent> <Leader>v+ :vertical resize +5<CR>
 nnoremap <silent> <Leader>v- :vertical resize -5<CR>
 
+" shortcut for folding
+nnoremap <silent> <Leader>fi :set foldmethod=indent<CR>
+nnoremap <silent> <Leader>fd :set foldmethod=manual<CR>ggVGzD
+
+" 禁用 <C-a>
+nnoremap <C-a> <Nop>
+xnoremap <C-a> <Nop>
 
 "HighLight trailing whitespace"
 highlight ExtraWhitespace ctermbg=red guibg=red
 match ExtraWhitespace /\s\+$/
 
 "HighLight trailing whitespace"
 highlight ExtraWhitespace ctermbg=red guibg=red
 match ExtraWhitespace /\s\+$/
-
-"use powerline-vim for normal use
-"instead of installing for both user and root
-"run to install lib: pip3 install --user powerline-status
-"python3 from powerline.vim import setup as powerline_setup
-"python3 powerline_setup()
-"python3 del powerline_setup