Last active
June 25, 2020 18:39
-
-
Save chris-burgin/b2056bf18080047f5bc061acaf98f60f to your computer and use it in GitHub Desktop.
Chris Burgin Vim
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"suggest.noselect": false, | |
"coc.preferences.formatOnSaveFiletypes": [ | |
"javascript", | |
"typescript", | |
"typescriptreact", | |
"json", | |
"javascriptreact", | |
"typescript.tsx", | |
"graphql" | |
] | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
" netrw | |
let g:netrw_liststyle = 0 | |
let g:netrw_sizestyle= "H" " show human readable file sizes | |
let g:netrw_sort_options = "i" " ignore case when sorting | |
let g:netrw_sort_sequence = '[\/]$,*,\.bak$,\.o$,\.h$,\.info$,\.swp$,\.obj$' | |
" map keys | |
imap <silent> jj <Esc> | |
"tabs, most of this is controlled via 'tope/vim-sleuth' | |
set tabstop=2 | |
set shiftwidth=2 | |
"line wrapping | |
set nowrap | |
" line numbers | |
set number relativenumber | |
autocmd TermOpen * setlocal nonumber norelativenumber | |
"live copy replace | |
set inccommand=split | |
" split below and right | |
set splitbelow | |
set splitright | |
"split resize | |
noremap <Left> :vertical resize +3<CR> | |
noremap <Right> :vertical resize -3<CR> | |
noremap <Up> :resize +3<CR> | |
noremap <Down> :resize -3<CR> | |
" dont resize for split | |
set noea | |
" dont abandom buffers when hidden | |
set hidden | |
" affects how long it takes coc or vim-go to notice changes | |
set updatetime=300 | |
" don't give |ins-completion-menu| messages. | |
set shortmess+=c | |
" always show signcolumns | |
set signcolumn=yes | |
" highmerge conflict markers | |
match ErrorMsg '^\(<\|=\|>\)\{7\}\([^=].\+\)\?$' | |
" Use esc to leave insert mode and go to normal mode while in :term | |
tnoremap <Esc> <C-\><C-n> | |
" folding | |
set foldmethod=syntax | |
set foldnestmax=10 | |
set nofoldenable | |
set foldlevel=2 | |
" searching | |
set ignorecase | |
set smartcase | |
" cursor line | |
set cursorline | |
" Plugins | |
call plug#begin('~/.vim/plugged') | |
Plug 'HerringtonDarkholme/yats.vim' " TS Syntax | |
Plug 'NLKNguyen/papercolor-theme' | |
Plug 'airblade/vim-gitgutter' | |
Plug 'christoomey/vim-tmux-navigator' | |
Plug 'fatih/vim-go' | |
Plug 'gruvbox-community/gruvbox' | |
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' } | |
Plug 'junegunn/fzf.vim' | |
Plug 'mbbill/undotree' | |
Plug 'neoclide/coc.nvim', {'branch': 'release'} | |
Plug 'ryanoasis/vim-devicons' | |
Plug 'tommcdo/vim-exchange' | |
Plug 'tpope/vim-repeat' | |
Plug 'tpope/vim-sensible' | |
Plug 'tpope/vim-sleuth' | |
Plug 'tpope/vim-surround' | |
Plug 'vim-airline/vim-airline' | |
Plug 'vim-airline/vim-airline-themes' | |
Plug 'tpope/vim-commentary' | |
" local plugins | |
Plug '~/.vim/plugged/project_functions' | |
call plug#end() | |
" Plugin Config | |
set t_Co=256 | |
" light | |
set background=light | |
colorscheme PaperColor | |
let g:airline_theme='papercolor' | |
" dark theme | |
" set background=dark | |
" colorscheme GruvBox | |
" let g:airline_theme='gruvbox' | |
" airline | |
let g:webdevicons_enable_airline_statusline = 1 | |
" formatting | |
command! -nargs=0 Prettier :CocCommand prettier.formatFile | |
nnoremap <leader>p :exe "Prettier" <CR> | |
command! -nargs=0 GoFmt :GoFmt | |
autocmd FileType go nnoremap<buffer> <Leader>p :exe "GoFmt" <CR> | |
"fzf | |
:nnoremap <C-p> :FZF<CR> | |
let g:fzf_colors = | |
\ { 'fg': ['fg', 'Normal'], | |
\ 'bg': ['bg', 'Normal'], | |
\ 'hl': ['fg', 'Comment'], | |
\ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'], | |
\ 'bg+': ['bg', 'CursorLine', 'CursorColumn'], | |
\ 'hl+': ['fg', 'Statement'], | |
\ 'info': ['fg', 'PreProc'], | |
\ 'border': ['fg', 'Ignore'], | |
\ 'prompt': ['fg', 'Conditional'], | |
\ 'pointer': ['fg', 'Exception'], | |
\ 'marker': ['fg', 'Keyword'], | |
\ 'spinner': ['fg', 'Label'], | |
\ 'header': ['fg', 'Comment'] } | |
" coc config | |
let g:coc_global_extensions = [ | |
\ 'coc-snippets', | |
\ 'coc-pairs', | |
\ 'coc-tsserver', | |
\ 'coc-prettier', | |
\ 'coc-json', | |
\ 'coc-tslint', | |
\ 'coc-rls', | |
\ ] | |
" Use tab for trigger completion with characters ahead and navigate. | |
" Use command ':verbose imap <tab>' to make sure tab is not mapped by other plugin. | |
inoremap <silent><expr> <TAB> | |
\ pumvisible() ? "\<C-n>" : | |
\ <SID>check_back_space() ? "\<TAB>" : | |
\ coc#refresh() | |
inoremap <expr><S-TAB> pumvisible() ? "\<C-p>" : "\<C-h>" | |
function! s:check_back_space() abort | |
let col = col('.') - 1 | |
return !col || getline('.')[col - 1] =~# '\s' | |
endfunction | |
" Use <c-space> to trigger completion. | |
inoremap <silent><expr> <c-space> coc#refresh() | |
" Use <cr> to confirm completion, `<C-g>u` means break undo chain at current position. | |
" Coc only does snippet and additional edit on confirm. | |
inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<C-g>u\<CR>" | |
" Or use `complete_info` if your vim support it, like: | |
" inoremap <expr> <cr> complete_info()["selected"] != "-1" ? "\<C-y>" : "\<C-g>u\<CR>" | |
" Use `[g` and `]g` to navigate diagnostics | |
nmap <silent> [g <Plug>(coc-diagnostic-prev) | |
nmap <silent> ]g <Plug>(coc-diagnostic-next) | |
" Remap keys for gotos | |
nmap <silent> gd <Plug>(coc-definition) | |
nmap <silent> gy <Plug>(coc-type-definition) | |
nmap <silent> gi <Plug>(coc-implementation) | |
nmap <silent> gr <Plug>(coc-references) | |
" Use K to show documentation in preview window | |
nnoremap <silent> K :call <SID>show_documentation()<CR> | |
function! s:show_documentation() | |
if (index(['vim','help'], &filetype) >= 0) | |
execute 'h '.expand('<cword>') | |
else | |
call CocAction('doHover') | |
endif | |
endfunction | |
" Highlight symbol under cursor on CursorHold | |
autocmd CursorHold * silent call CocActionAsync('highlight') | |
" Remap for rename current word | |
nmap <F2> <Plug>(coc-rename) | |
" Remap for format selected region | |
xmap <leader>f <Plug>(coc-format-selected) | |
nmap <leader>f <Plug>(coc-format-selected) | |
augroup mygroup | |
autocmd! | |
" Setup formatexpr specified filetype(s). | |
autocmd FileType typescript,json setl formatexpr=CocAction('formatSelected') | |
" Update signature help on jump placeholder | |
autocmd User CocJumpPlaceholder call CocActionAsync('showSignatureHelp') | |
augroup end | |
" Remap for do codeAction of selected region, ex: `<leader>aap` for current paragraph | |
xmap <leader>a <Plug>(coc-codeaction-selected) | |
nmap <leader>a <Plug>(coc-codeaction-selected) | |
" Remap for do codeAction of current line | |
nmap <leader>ac <Plug>(coc-codeaction) | |
" Fix autofix problem of current line | |
nmap <leader>qf <Plug>(coc-fix-current) | |
" Create mappings for function text object, requires document symbols feature of languageserver. | |
xmap if <Plug>(coc-funcobj-i) | |
xmap af <Plug>(coc-funcobj-a) | |
omap if <Plug>(coc-funcobj-i) | |
omap af <Plug>(coc-funcobj-a) | |
" Use <C-d> for select selections ranges, needs server support, like: coc-tsserver, coc-python | |
nmap <silent> <C-d> <Plug>(coc-range-select) | |
xmap <silent> <C-d> <Plug>(coc-range-select) | |
" Using CocList | |
" Show all diagnostics | |
nnoremap <silent> <space>a :<C-u>CocList diagnostics<cr> | |
" Manage extensions | |
nnoremap <silent> <space>e :<C-u>CocList extensions<cr> | |
" Show commands | |
nnoremap <silent> <space>c :<C-u>CocList commands<cr> | |
" Find symbol of current document | |
nnoremap <silent> <space>o :<C-u>CocList outline<cr> | |
" Search workspace symbols | |
nnoremap <silent> <space>s :<C-u>CocList -I symbols<cr> | |
" Do default action for next item. | |
nnoremap <silent> <space>j :<C-u>CocNext<CR> | |
" Do default action for previous item. | |
nnoremap <silent> <space>k :<C-u>CocPrev<CR> | |
" Resume latest coc list | |
nnoremap <silent> <space>p :<C-u>CocListResume<CR> | |
" golang | |
let g:go_doc_popup_window = 1 | |
" undotree | |
if has("persistent_undo") | |
set undodir="~/.undodir" | |
set undofile | |
endif | |
nnoremap <leader>u :UndotreeToggle <CR> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment