Last active
March 12, 2022 08:08
-
-
Save dongnguyenltqb/17fcada65856ed8df580d78a14f2dd5e to your computer and use it in GitHub Desktop.
dotconfig
This file contains 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
{ | |
"languageserver": { | |
"golang": { | |
"command": "gopls", | |
"rootPatterns": ["go.mod", ".vim/", ".git/", ".hg/"], | |
"filetypes": ["go"] | |
} | |
}, | |
"tsserver.npm": "/usr/bin/npm", | |
"coc.preferences.formatOnSaveFiletypes": [ | |
"javascript", | |
"typescript", | |
"go", | |
"json", | |
"jsonc", | |
"rust" | |
], | |
"eslint.alwaysShowStatus": true, | |
"rust.all_features": true, | |
"rust-client.updateOnStartup": true, | |
"rust-client.revealOutputChannelOn": "warn", | |
"rust.jobs": 8, | |
"rust.full_docs": true, | |
"rust-analyzer.cargo.allFeatures": true, | |
"rust-analyzer.lens.methodReferences": true | |
} |
This file contains 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
" Required: | |
call plug#begin(expand('~/.config/nvim/plugged')) | |
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' } | |
Plug 'neoclide/coc.nvim', {'do': 'yarn install --frozen-lockfile'} | |
Plug 'Shougo/vimproc.vim', {'do' : 'make'} | |
Plug 'scrooloose/nerdtree' | |
Plug 'jistr/vim-nerdtree-tabs' | |
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } | |
Plug 'itchyny/lightline.vim' | |
Plug 'tpope/vim-commentary' | |
Plug 'sheerun/vim-polyglot' | |
Plug 'tpope/vim-fugitive' | |
Plug 'tpope/vim-rhubarb' | |
Plug 'Raimondi/delimitMate' | |
Plug 'voldikss/vim-floaterm' | |
Plug 't9md/vim-choosewin' | |
Plug 'tomasr/molokai' | |
Plug 'xolox/vim-misc' | |
Plug 'xolox/vim-session' | |
Plug 'racer-rust/vim-racer' | |
Plug 'Yggdroot/LeaderF', { 'do': ':LeaderfInstallCExtension' } | |
call plug#end() | |
set clipboard=unnamedplus | |
set clipboard+=unnamedplus | |
command! -nargs=0 Prettier :CocCommand prettier.formatFile | |
syntax on | |
set ruler | |
set relativenumber | |
set scrolloff=12 | |
set number | |
" session management | |
let g:session_directory = "~/.config/nvim/session" | |
let g:session_autoload = "yes" | |
let g:session_autosave = "yes" | |
let g:session_command_aliases = 1 | |
let g:session_autosave_periodic = 1 | |
"" Lightline | |
set tabline=%!lightline#tabline() | |
set laststatus=2 | |
let g:lightline = { | |
\ 'active': { | |
\ 'left': [ [ 'mode', 'paste' ], | |
\ [ 'cocstatus','currentfunction','gitbranch', 'readonly', 'filename', 'modified' ] ] | |
\ }, | |
\ 'component_function': { | |
\ 'cocstatus': 'coc#status', | |
\ 'currentfunction': 'CocCurrentFunction', | |
\ 'gitbranch': 'FugitiveHead' | |
\ }} | |
"" Color | |
set termguicolors | |
colorscheme molokai | |
let no_buffers_menu=1 | |
set mousemodel=popup | |
set t_Co=256 | |
set guioptions=egmrti | |
set gfn=Monospace\ 10 | |
highlight Cursor guifg=white guibg=red | |
highlight iCursor guifg=white guibg=red | |
set guicursor=n-v-c:block-Cursor | |
set guicursor+=i:ver100-iCursor | |
set guicursor+=n-v-c:blinkon0 | |
set guicursor+=i:blinkwait10 | |
" esearch | |
hi ESearchMatch ctermfg=black ctermbg=white guifg=#000000 guibg=yellow | |
"" Map leader to , | |
let mapleader=',' | |
"" Tabs. May be overridden by autocmd rules | |
set tabstop=4 | |
set softtabstop=0 | |
set shiftwidth=4 | |
set expandtab | |
"" Split | |
noremap <Leader>h :<C-u>split<CR> | |
noremap <Leader>v :<C-u>vsplit<CR> | |
"" Git | |
set diffopt+=horizontal | |
noremap <Leader>ga :Gwrite<CR> | |
noremap <Leader>gc :Git commit<CR> | |
noremap <Leader>gsh :Git push<CR> | |
noremap <Leader>gll :Git pull<CR> | |
noremap <Leader>gst :Git<CR> | |
noremap <Leader>gb :Git blame<CR> | |
noremap <Leader>gd :Git diff<CR> | |
noremap <Leader>gr :Git remove<CR>" | |
noremap <Leader>zz :!cargo run<CR> | |
noremap <Leader>zx :!cargo build<CR> | |
" vim choosewin | |
nmap <Space><Space> <Plug>(choosewin) | |
"" MyCustom | |
set noswapfile | |
set autoread | |
set autowrite | |
au CursorHold,CursorHoldI * checktime | |
noremap <Leader><CR> :nohl<CR> | |
noremap <Leader>w :w<CR> \| :SaveSession<CR> | |
noremap <Leader>rp :%s///g<Left><Left><Left> | |
noremap qq :qa!<CR> | |
noremap <C-s> <C-u> | |
noremap <F4> <ESC>:tabnext<CR> | |
noremap <F5> <ESC>:tabnew<CR> | |
imap <F4> <ESC>:tabnext<CR> | |
imap <F5> <ESC>:tabnew<CR> | |
vmap <F4> <ESC>:tabnext<CR> | |
vmap <F5> <ESC>:tabnew<CR> | |
noremap <Leader>sps :SpSearch<Space> | |
""" Floatterm | |
let g:floaterm_keymap_new = '<F7>' | |
let g:floaterm_keymap_prev = '<F8>' | |
let g:floaterm_keymap_next = '<F9>' | |
let g:floaterm_keymap_toggle = '0' | |
let g:floaterm_width = 0.8 | |
let g:floaterm_height = 0.8 | |
" hi Floaterm guibg= | |
"" NERDTree configuration | |
let g:NERDTreeChDirMode=2 | |
let g:NERDTreeIgnore=['\.rbc$', '\~$', '\.pyc$', '\.db$', '\.sqlite$', '__pycache__','node_modules','target'] | |
let g:NERDTreeSortOrder=['^__\.py$', '\/$', '*', '\.swp$', '\.bak$', '\~$'] | |
let g:NERDTreeShowBookmarks=1 | |
let g:nerdtree_tabs_focus_on_files=1 | |
let g:NERDTreeMapOpenInTabSilent = '<RightMouse>' | |
let g:NERDTreeWinSize = 30 | |
set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.pyc,*.db,*.sqlite,target/* | |
nnoremap <silent> <F2> :NERDTreeFind<CR> | |
nnoremap <silent> <F3> :NERDTreeToggle<CR> | |
"" fzf.vim | |
set wildmode=list:longest,list:full | |
set wildignore+=*.o,*.obj,.git,*.rbc,*.pyc,__pycache__,node_modules/*,dist/*,target/* | |
" " ripgrep | |
if executable('rg') | |
let $FZF_DEFAULT_COMMAND = 'rg --files --hidden --follow --glob "!{.git/*,target/*,**/node_modules,**/.git,**/target}"' | |
set grepprg=rg\ --vimgrep | |
command! -bang -nargs=* Find call fzf#vim#grep('rg --column --line-number --no-heading --fixed-strings --ignore-case --color "always" '.shellescape(<q-args>).'| tr -d "\017"', 1, <bang>0) | |
endif | |
cnoremap <C-P> <C-R>=expand("%:p:h") . "/" <CR> | |
nnoremap <silent> <leader>b :Buffers<CR> | |
nnoremap <silent> <leader>e :FZF -m<CR> | |
" ------------------------------------------------------------------------------------------------- | |
" coc.nvim default settings | |
" ------------------------------------------------------------------------------------------------- | |
" if hidden is not set, TextEdit might fail. | |
set hidden | |
" Better display for messages | |
set cmdheight=2 | |
" Smaller updatetime for CursorHold & CursorHoldI | |
set updatetime=300 | |
set ttimeoutlen=50 | |
" don't give |ins-completion-menu| messages. | |
set shortmess+=c | |
" always show signcolumns | |
set signcolumn=yes | |
" 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! CocCurrentFunction() | |
return get(b:, 'coc_current_function', '') | |
endfunction | |
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 `[c` and `]c` to navigate diagnostics | |
nmap <silent> [c <Plug>(coc-diagnostic-prev) | |
nmap <silent> ]c <Plug>(coc-diagnostic-next) | |
" Remap keys for gotos | |
" nmap <silent> gd <Plug>(coc-definition) | |
nmap <silent> gd :<C-u>call CocActionAsync('jumpDefinition')<CR> | |
nmap <silent> gy <Plug>(coc-type-definition) | |
nmap <silent> gi <Plug>(coc-implementation) | |
nmap <silent> gr <Plug>(coc-references) | |
" Use U to show documentation in preview window | |
nnoremap <silent> U :call <SID>show_documentation()<CR> | |
" Remap for rename current word | |
nmap <leader>rn <Plug>(coc-rename) | |
nnoremap <leader>prw :CocSearch <C-R>=expand("<cword>")<CR><CR> | |
" Remap for format selected region | |
vmap <leader>f <Plug>(coc-format-selected) | |
nmap <leader>f <Plug>(coc-format-selected) | |
" 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> | |
" disable vim-go :GoDef short cut (gd) | |
" this is handled by LanguageClient [LC] | |
let g:go_def_mapping_enabled = 0 | |
" go | |
" vim-go | |
" run :GoBuild or :GoTestCompile based on the go file | |
function! s:build_go_files() | |
let l:file = expand('%') | |
if l:file =~# '^\f\+_test\.go$' | |
call go#test#Test(0, 1) | |
elseif l:file =~# '^\f\+\.go$' | |
call go#cmd#Build(0) | |
endif | |
endfunction | |
let g:go_list_type = "quickfix" | |
let g:go_fmt_command = "goimports" | |
let g:go_fmt_fail_silently = 1 | |
let g:go_highlight_types = 1 | |
let g:go_highlight_fields = 1 | |
let g:go_highlight_functions = 1 | |
let g:go_highlight_methods = 1 | |
let g:go_highlight_operators = 1 | |
let g:go_highlight_build_constraints = 1 | |
let g:go_highlight_structs = 1 | |
let g:go_highlight_generate_tags = 1 | |
let g:go_highlight_space_tab_error = 0 | |
let g:go_highlight_array_whitespace_error = 0 | |
let g:go_highlight_trailing_whitespace_error = 0 | |
let g:go_highlight_extra_types = 1 | |
autocmd BufNewFile,BufRead *.go setlocal noexpandtab tabstop=4 shiftwidth=4 softtabstop=4 | |
augroup completion_preview_close | |
autocmd! | |
if v:version > 703 || v:version == 703 && has('patch598') | |
autocmd CompleteDone * if !&previewwindow && &completeopt =~ 'preview' | silent! pclose | endif | |
endif | |
augroup END | |
augroup go | |
au! | |
au Filetype go command! -bang A call go#alternate#Switch(<bang>0, 'edit') | |
au Filetype go command! -bang AV call go#alternate#Switch(<bang>0, 'vsplit') | |
au Filetype go command! -bang AS call go#alternate#Switch(<bang>0, 'split') | |
au Filetype go command! -bang AT call go#alternate#Switch(<bang>0, 'tabe') | |
au FileType go nmap <Leader>dd <Plug>(go-def-vertical) | |
au FileType go nmap <Leader>dv <Plug>(go-doc-vertical) | |
au FileType go nmap <Leader>db <Plug>(go-doc-browser) | |
au FileType go nmap <leader>r <Plug>(go-run) | |
au FileType go nmap <leader>t <Plug>(go-test) | |
au FileType go nmap <Leader>gt <Plug>(go-coverage-toggle) | |
au FileType go nmap <Leader>i <Plug>(go-info) | |
au FileType go nmap <silent> <Leader>l <Plug>(go-metalinter) | |
au FileType go nmap <C-g> :GoDecls<cr> | |
au FileType go nmap <leader>dr :GoDeclsDir<cr> | |
au FileType go imap <C-g> <esc>:<C-u>GoDecls<cr> | |
au FileType go imap <leader>dr <esc>:<C-u>GoDeclsDir<cr> | |
au FileType go nmap <leader>rb :<C-u>call <SID>build_go_files()<CR> | |
augroup END | |
" don't show the help in normal mode | |
let g:Lf_HideHelp = 1 | |
let g:Lf_UseCache = 0 | |
let g:Lf_UseVersionControlTool = 0 | |
let g:Lf_IgnoreCurrentBufferName = 1 | |
" popup mode | |
let g:Lf_WindowPosition = 'popup' | |
let g:Lf_PreviewInPopup = 1 | |
let g:Lf_StlSeparator = { 'left': "\ue0b0", 'right': "\ue0b2", 'font': "UbuntuMono Nerd Font" } | |
let g:Lf_PreviewResult = {'Function': 0, 'BufTag': 0 } | |
let g:Lf_ShortcutF = "<leader>ff" | |
noremap <leader>fb :<C-U><C-R>=printf("Leaderf buffer %s", "")<CR><CR> | |
noremap <leader>fm :<C-U><C-R>=printf("Leaderf mru %s", "")<CR><CR> | |
noremap <leader>ft :<C-U><C-R>=printf("Leaderf bufTag %s", "")<CR><CR> | |
noremap <leader>fl :<C-U><C-R>=printf("Leaderf line %s", "")<CR><CR> | |
noremap <C-B> :<C-U><C-R>=printf("Leaderf! rg --current-buffer -e %s ", expand("<cword>"))<CR> | |
noremap <C-F> :<C-U><C-R>=printf("Leaderf! rg -e %s ", expand("<cword>"))<CR> | |
" search visually selected text literally | |
xnoremap gf :<C-U><C-R>=printf("Leaderf! rg -F -e %s ", leaderf#Rg#visual())<CR> | |
noremap go :<C-U>Leaderf! rg --recall<CR> | |
" should use `Leaderf gtags --update` first | |
let g:Lf_GtagsAutoGenerate = 0 | |
let g:Lf_Gtagslabel = 'native-pygments' | |
noremap <leader>fr :<C-U><C-R>=printf("Leaderf! gtags -r %s --auto-jump", expand("<cword>"))<CR><CR> | |
noremap <leader>fd :<C-U><C-R>=printf("Leaderf! gtags -d %s --auto-jump", expand("<cword>"))<CR><CR> | |
noremap <leader>fo :<C-U><C-R>=printf("Leaderf! gtags --recall %s", "")<CR><CR> | |
noremap <leader>fn :<C-U><C-R>=printf("Leaderf gtags --next %s", "")<CR><CR> | |
noremap <leader>fp :<C-U><C-R>=printf("Leaderf gtags --previous %s", "")<CR><CR> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment