X-Git-Url: https://git.xinqibao.xyz/dotfiles.git/blobdiff_plain/9fd073273405b8309f3fa57184f6cde479ca48b9..31c7165b0830fb690d133d7d6bced251775ecf94:/.config/nvim/init.vim diff --git a/.config/nvim/init.vim b/.config/nvim/init.vim new file mode 100644 index 0000000..ecc9745 --- /dev/null +++ b/.config/nvim/init.vim @@ -0,0 +1,234 @@ +syntax enable +let mapleader=" " + +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 +let &termencoding=&encoding +set fileencodings=utf-8,gbk +set fileformat=unix +set foldmethod=manual +set encoding=utf-8 "required for ycm + +set tabstop=4 +set softtabstop=4 +set shiftwidth=4 +set expandtab +set smartindent +set backspace=indent,eol,start + +set number +set nowrap +set signcolumn=auto +set smartcase +set incsearch +set hlsearch +set ignorecase +set cursorline +set conceallevel=0 +set showtabline=2 +set laststatus=2 "always show status line +set noshowmode +set wildmenu + +set mouse=a +set autochdir +set updatetime=300 +set noerrorbells + +" Turn backup off +set noswapfile +set nobackup +set nowritebackup +set undodir=~/.cache/nvim/undodir +set undofile + +set tags=tags~;,tags~ +"setting gf (go file) path +"change kernel version to your version, for kernel development +set path=.,lib;,include;,includes; +set path+=/usr/include,/usr/include/c++/* +set path+=/usr/local/include + +"ColumnLimit +set colorcolumn=120 +highlight ColorColumn ctermbg=0 guibg=lightgrey + +" Writes to the unnamed register also writes to the * and + registers. This +" makes it easy to interact with the system clipboard +if has ('unnamedplus') + set clipboard=unnamedplus +else + set clipboard=unnamed +endif + +call plug#begin() + Plug 'morhetz/gruvbox' + Plug 'Yggdroot/indentLine' + 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 'ludovicchabant/vim-gutentags' + + Plug 'mbbill/undotree' + Plug 'preservim/nerdtree' + Plug 'plasticboy/vim-markdown' + + Plug 'tpope/vim-fugitive' + Plug 'kdheepak/lazygit.nvim' + + "Plug 'ycm-core/YouCompleteMe' + "Plug 'rhysd/vim-clang-format' + + Plug 'neoclide/coc.nvim' + + Plug 'nvim-treesitter/nvim-treesitter' + "Plug 'mfussenegger/nvim-dap' + "Plug 'puremourning/vimspector' +call plug#end() + +"---------------------- +" gruvbox setting +"---------------------- +if has_key(plugs, 'gruvbox') + colorscheme gruvbox +endif + +"---------------------- +" vim-airline setting +"---------------------- +if has_key(plugs, 'vim-airline') + "tabline with airline + ":help airline-tabline + let g:airline#extensions#tabline#enabled = 1 + let g:airline#extensions#tabline#show_buffers = 0 + let g:airline#extensions#tabline#show_splits = 0 + let g:airline#extensions#tabline#show_tab_count = 0 + let g:airline#extensions#tabline#show_close_button = 0 +endif + +"---------------------- +" fzf.vim setting +"---------------------- +if has_key(plugs, 'fzf.vim') + "mapping for fzf.vim + nnoremap :GFiles + "as default / pair used to page down/up entire page + nnoremap :Tags +endif + +"---------------------- +" undotree setting +"---------------------- +if has_key(plugs, 'undotree') + nnoremap u :UndotreeShow +endif + +"---------------------- +" nerdtree setting +"---------------------- +if has_key(plugs, 'nerdtree') + autocmd StdinReadPre * let s:std_in=1 + "when vim openning with no file, open NERDTree + autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif + nnoremap n :NERDTreeToggle +endif + +"---------------------- +" YouCompleteMe 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 gd :YcmCompleter GoTo + nnoremap gr :YcmCompleter GoToReferences +endif + +"---------------------- +" coc.vim setting +"---------------------- +if has_key(plugs, "coc.nvim") + " Use `:CocDiagnostics` to get all diagnostics of current buffer in location list. + nmap g[ (coc-diagnostic-prev) + nmap g] (coc-diagnostic-next) + + " GoTo code navigation. + nmap gd (coc-definition) + nmap gr (coc-references) + nmap gy (coc-type-definition) + nmap gi (coc-implementation) + + " Highlight the symbol and its references when holding the cursor. + autocmd CursorHold * silent call CocActionAsync('highlight') + + " Symbol renaming. + nmap rn (coc-rename) + + " Formatting selected code. + xmap f (coc-format-selected) + nmap f (coc-format-selected) + + " clangd + nmap gh :CocCommand clangd.switchSourceHeader + + " Use K to show documentation in preview window. + nnoremap h :call show_documentation() + function! s:show_documentation() + if (index(['vim','help'], &filetype) >= 0) + execute 'h '.expand('') + elseif (coc#rpc#ready()) + call CocActionAsync('doHover') + else + execute '!' . &keywordprg . " " . expand('') + endif + endfunction +endif + +"---------------------- +" nvim-treesitter setting +"---------------------- +if has_key(plugs, 'nvim-treesitter') + lua require('plugin-config/nvim-treesitter') +endif + + +nnoremap J :tabprevious +nnoremap K :tabnext +nnoremap J :tabmove -1 +nnoremap K :tabmove +1 +nnoremap h +nnoremap j +nnoremap k +nnoremap l +nnoremap " viwa"bi"lel +nnoremap ' viwa'bi'lel +nnoremap + :resize +5 +nnoremap - :resize -5 +nnoremap v+ :vertical resize +5 +nnoremap v- :vertical resize -5 + + +"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