/ .vimrc
.vimrc
  1  " Plugins
  2  
  3  call plug#begin()
  4  
  5  	Plug 'jiangmiao/auto-pairs'
  6  	Plug 'fneu/breezy'
  7  	Plug 'neoclide/coc.nvim', {'branch': 'release'}
  8  	" Plug 'itchyny/lightline.vim'
  9  	Plug 'preservim/nerdtree'
 10  	" Plug 'NLKNguyen/papercolor-theme'
 11  	Plug 'rust-lang/rust.vim'
 12  	" Plug 'dracula/vim', { 'as': 'dracula' }
 13  	Plug 'krischik/vim-ada'
 14  	Plug 'vim-airline/vim-airline'
 15  	Plug 'vim-airline/vim-airline-themes'
 16  	Plug 'ryanoasis/vim-devicons'
 17  	Plug 'vimwiki/vimwiki'
 18  
 19  call plug#end()
 20  
 21  " Configuration
 22  
 23  filetype plugin indent on
 24  
 25  set background=dark
 26  set encoding=utf-8
 27  set laststatus=2
 28  set linebreak
 29  let mapleader=" "
 30  set nobackup
 31  set nolist
 32  set noshowmode
 33  set nowritebackup
 34  set signcolumn=yes
 35  set updatetime=300
 36  set wrap
 37  
 38  syntax enable
 39  
 40  "" Airline
 41  let g:airline_powerline_fonts = 1
 42  let g:airline_theme='breezy'
 43  
 44  "" CoC
 45  inoremap <silent><expr> <TAB>
 46  	\ coc#pum#visible() ? coc#pum#next(1) :
 47  	\ CheckBackspace() ? "\<Tab>" :
 48  	\ coc#refresh()
 49  inoremap <expr><S-TAB> coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"
 50  
 51  inoremap <silent><expr> <CR> coc#pum#visible() ? coc#pum#confirm()
 52  				\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"
 53  
 54  function! CheckBackspace() abort
 55  	let col = col('.') - 1
 56  	return !col || getline('.')[col - 1] =~# '\s'
 57  endfunction
 58  
 59  if has('nvim')
 60  	inoremap <silent><expr> <c-space> coc#refresh()
 61  else
 62  	inoremap <silent><expr> <c-@> coc#refresh()
 63  endif
 64  
 65  nmap <silent><nowait> [g <Plug>(coc-diagnostic-prev)
 66  nmap <silent><nowait> ]g <Plug>(coc-diagnostic-next)
 67  
 68  nmap <silent><nowait> gd <Plug>(coc-definition)
 69  nmap <silent><nowait> gy <Plug>(coc-type-definition)
 70  nmap <silent><nowait> gi <Plug>(coc-implementation)
 71  nmap <silent><nowait> gr <Plug>(coc-references)
 72  
 73  nnoremap <silent> K :call ShowDocumentation()<CR>
 74  
 75  function! ShowDocumentation()
 76  	if CocAction('hasProvider', 'hover')
 77  		call CocActionAsync('doHover')
 78  	else
 79  		call feedkeys('K', 'in')
 80  	endif
 81  endfunction
 82  
 83  autocmd CursorHold * silent call CocActionAsync('highlight')
 84  
 85  nmap <leader>rn <Plug>(coc-rename)
 86  
 87  xmap <leader>f <Plug>(coc-format-selected)
 88  nmap <leader>f <Plug>(coc-format-selected)
 89  
 90  augroup mygroup
 91  	autocmd!
 92  	autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected')
 93  augroup end
 94  
 95  xmap <leader>a <Plug>(coc-codeaction-selected)
 96  nmap <leader>a <Plug>(coc-codeaction-selected)
 97  
 98  nmap <leader>ac <Plug>(coc-codeaction-cursor)
 99  nmap <leader>as <Plug>(coc-codeaction-source)
100  nmap <leader>qf <Plug>(coc-fix-current)
101  
102  nmap <silent> <leader>re <Plug>(coc-codeaction-refactor)
103  xmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
104  nmap <silent> <leader>r <Plug>(coc-codeaction-refactor-selected)
105  
106  nmap <leader>cl <Plug>(coc-codelens-action)
107  
108  xmap if <Plug>(coc-funcobj-i)
109  omap if <Plug>(coc-funcobj-i)
110  xmap af <Plug>(coc-funcobj-a)
111  omap af <Plug>(coc-funcobj-a)
112  xmap ic <Plug>(coc-classobj-i)
113  omap ic <Plug>(coc-classobj-i)
114  xmap ac <Plug>(coc-classobj-a)
115  omap ac <Plug>(coc-classobj-a)
116  
117  if has('nvim-0.4.0') || has('patch-8.2.0750')
118  	nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
119  	nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
120  	inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>"
121  	inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>"
122  	vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>"
123  	vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>"
124  endif
125  
126  nmap <silent> <C-s> <Plug>(coc-range-select)
127  xmap <silent> <C-s> <Plug>(coc-range-select)
128  
129  command! -nargs=0 Format :call CocActionAsync('format')
130  
131  command! -nargs=? Fold :call CocAction('fold', <f-args>)
132  
133  command! -nargs=0 OR :call CocActionAsync('runCommand', 'editor.action.organizeImport')
134  
135  set statusline^={coc#status()}%{get(b:,'coc_current_function','')}
136  
137  nnoremap <silent><nowait> <space>a  :<C-u>CocList diagnostics<cr>
138  nnoremap <silent><nowait> <space>e  :<C-u>CocList extensions<cr>
139  nnoremap <silent><nowait> <space>c  :<C-u>CocList commands<cr>
140  nnoremap <silent><nowait> <space>o  :<C-u>CocList outline<cr>
141  nnoremap <silent><nowait> <space>s  :<C-u>CocList -I symbols<cr>
142  nnoremap <silent><nowait> <space>j  :<C-u>CocNext<CR>
143  nnoremap <silent><nowait> <space>k  :<C-u>CocPrev<CR>
144  nnoremap <silent><nowait> <space>p  :<C-u>CocListResume<CR>
145  
146  "" Colorscheme
147  colorscheme breezy
148  
149  "" Lightline
150  let g:lightline = {
151  	\ 'colorscheme': 'breezy',
152  	\ }
153  
154  "" NERDTree
155  nmap <silent> <C-n> :NERDTreeToggle<CR>