@ -0,0 +1,135 @@ | |||
" Use tab for trigger completion with characters ahead and navigate. | |||
" NOTE: Use command ':verbose imap <tab>' to make sure tab is not mapped by | |||
" other plugin before putting this into your config. | |||
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. | |||
if has('nvim') | |||
inoremap <silent><expr> <c-space> coc#refresh() | |||
else | |||
inoremap <silent><expr> <c-@> coc#refresh() | |||
endif | |||
" Make <CR> auto-select the first completion item and notify coc.nvim to | |||
" format on enter, <cr> could be remapped by other vim plugin | |||
inoremap <silent><expr> <cr> pumvisible() ? coc#_select_confirm() | |||
\: "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>" | |||
" Use `[g` and `]g` to navigate diagnostics | |||
" Use `:CocDiagnostics` to get all diagnostics of current buffer in location list. | |||
nmap <silent> [g <Plug>(coc-diagnostic-prev) | |||
nmap <silent> ]g <Plug>(coc-diagnostic-next) | |||
" GoTo code navigation. | |||
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>') | |||
elseif (coc#rpc#ready()) | |||
call CocActionAsync('doHover') | |||
else | |||
execute '!' . &keywordprg . " " . expand('<cword>') | |||
endif | |||
endfunction | |||
" Highlight the symbol and its references when holding the cursor. | |||
autocmd CursorHold * silent call CocActionAsync('highlight') | |||
" Symbol renaming. | |||
nmap <leader>rn <Plug>(coc-rename) | |||
" Formatting selected code. | |||
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 | |||
" Applying codeAction to the selected region. | |||
" Example: `<leader>aap` for current paragraph | |||
xmap <leader>a <Plug>(coc-codeaction-selected) | |||
nmap <leader>a <Plug>(coc-codeaction-selected) | |||
" Remap keys for applying codeAction to the current buffer. | |||
nmap <leader>ac <Plug>(coc-codeaction) | |||
" Apply AutoFix to problem on the current line. | |||
nmap <leader>qf <Plug>(coc-fix-current) | |||
" Map function and class text objects | |||
" NOTE: Requires 'textDocument.documentSymbol' support from the language server. | |||
xmap if <Plug>(coc-funcobj-i) | |||
omap if <Plug>(coc-funcobj-i) | |||
xmap af <Plug>(coc-funcobj-a) | |||
omap af <Plug>(coc-funcobj-a) | |||
xmap ic <Plug>(coc-classobj-i) | |||
omap ic <Plug>(coc-classobj-i) | |||
xmap ac <Plug>(coc-classobj-a) | |||
omap ac <Plug>(coc-classobj-a) | |||
" Remap <C-f> and <C-b> for scroll float windows/popups. | |||
if has('nvim-0.4.0') || has('patch-8.2.0750') | |||
nnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>" | |||
nnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>" | |||
inoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(1)\<cr>" : "\<Right>" | |||
inoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? "\<c-r>=coc#float#scroll(0)\<cr>" : "\<Left>" | |||
vnoremap <silent><nowait><expr> <C-f> coc#float#has_scroll() ? coc#float#scroll(1) : "\<C-f>" | |||
vnoremap <silent><nowait><expr> <C-b> coc#float#has_scroll() ? coc#float#scroll(0) : "\<C-b>" | |||
endif | |||
" Use CTRL-S for selections ranges. | |||
" Requires 'textDocument/selectionRange' support of language server. | |||
nmap <silent> <C-s> <Plug>(coc-range-select) | |||
xmap <silent> <C-s> <Plug>(coc-range-select) | |||
" Add `:Format` command to format current buffer. | |||
command! -nargs=0 Format :call CocAction('format') | |||
" Add `:Fold` command to fold current buffer. | |||
command! -nargs=? Fold :call CocAction('fold', <f-args>) | |||
" Add `:OR` command for organize imports of the current buffer. | |||
command! -nargs=0 OR :call CocAction('runCommand', 'editor.action.organizeImport') | |||
" Add (Neo)Vim's native statusline support. | |||
" NOTE: Please see `:h coc-status` for integrations with external plugins that | |||
" provide custom statusline: lightline.vim, vim-airline. | |||
set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} | |||
" Mappings for CoCList | |||
" Show all diagnostics. | |||
nnoremap <silent><nowait> <space>a :<C-u>CocList diagnostics<cr> | |||
" Manage extensions. | |||
nnoremap <silent><nowait> <space>e :<C-u>CocList extensions<cr> | |||
" Show commands. | |||
nnoremap <silent><nowait> <space>c :<C-u>CocList commands<cr> | |||
" Find symbol of current document. | |||
nnoremap <silent><nowait> <space>o :<C-u>CocList outline<cr> | |||
" Search workspace symbols. | |||
nnoremap <silent><nowait> <space>s :<C-u>CocList -I symbols<cr> | |||
" Do default action for next item. | |||
nnoremap <silent><nowait> <space>j :<C-u>CocNext<CR> | |||
" Do default action for previous item. | |||
nnoremap <silent><nowait> <space>k :<C-u>CocPrev<CR> | |||
" Resume latest coc list. | |||
nnoremap <silent><nowait> <space>p :<C-u>CocListResume<CR> |
@ -0,0 +1,32 @@ | |||
set showtabline=2 | |||
let g:lightline#bufferline#show_number = 2 | |||
let g:lightline#bufferline#shorten_path = 0 | |||
let g:lightline#bufferline#unnamed = '[No Name]' | |||
let g:lightline#bufferline#enable_nerdfont = 1 | |||
let g:lightline#bufferline#modified = ' *' | |||
let g:lightline#bufferline#read_only = ' ' | |||
" Movement bindings | |||
nmap <Leader>1 <Plug>lightline#bufferline#go(1) | |||
nmap <Leader>2 <Plug>lightline#bufferline#go(2) | |||
nmap <Leader>3 <Plug>lightline#bufferline#go(3) | |||
nmap <Leader>4 <Plug>lightline#bufferline#go(4) | |||
nmap <Leader>5 <Plug>lightline#bufferline#go(5) | |||
nmap <Leader>6 <Plug>lightline#bufferline#go(6) | |||
nmap <Leader>7 <Plug>lightline#bufferline#go(7) | |||
nmap <Leader>8 <Plug>lightline#bufferline#go(8) | |||
nmap <Leader>9 <Plug>lightline#bufferline#go(9) | |||
nmap <Leader>0 <Plug>lightline#bufferline#go(10) | |||
" Deletion Bindings | |||
nmap <Leader>c1 <Plug>lightline#bufferline#delete(1) | |||
nmap <Leader>c2 <Plug>lightline#bufferline#delete(2) | |||
nmap <Leader>c3 <Plug>lightline#bufferline#delete(3) | |||
nmap <Leader>c4 <Plug>lightline#bufferline#delete(4) | |||
nmap <Leader>c5 <Plug>lightline#bufferline#delete(5) | |||
nmap <Leader>c6 <Plug>lightline#bufferline#delete(6) | |||
nmap <Leader>c7 <Plug>lightline#bufferline#delete(7) | |||
nmap <Leader>c8 <Plug>lightline#bufferline#delete(8) | |||
nmap <Leader>c9 <Plug>lightline#bufferline#delete(9) | |||
nmap <Leader>c0 <Plug>lightline#bufferline#delete(10) |
@ -0,0 +1,161 @@ | |||
let g:lightline = { | |||
\ 'colorscheme': 'material_vim', | |||
\ 'active': { | |||
\ 'left': [ [ 'mode', 'paste' ], [ 'readonly', 'filename', 'modified' ] ], | |||
\ 'right':[[ 'filetype', 'percent', 'lineinfo' ], [ 'cocstatus' ]] | |||
\ }, | |||
\ 'tabline': { | |||
\ 'left': [['explorer_pad'], ['buffers']], | |||
\ 'right': [['gitbranch', 'smarttabs']] | |||
\ }, | |||
\ 'component_expand': { | |||
\ 'buffers': 'lightline#bufferline#buffers', | |||
\ 'smarttabs': 'SmartTabsIndicator', | |||
\ 'trailing': 'lightline#trailing_whitespace#component' | |||
\ }, | |||
\ 'component_function': { | |||
\ 'explorer_pad': 'lightline#explorer_pad#left_pad', | |||
\ 'percent': 'LightlinePercent', | |||
\ 'lineinfo': 'LightlineLineinfo', | |||
\ 'filename': 'LightlineFilename', | |||
\ 'fullname': 'LightlineFullname', | |||
\ 'mode': 'LightlineMode', | |||
\ 'gitbranch': 'LightlineGitbranch', | |||
\ 'readonly': 'LightlineReadonly', | |||
\ 'modified': 'LightlineModified', | |||
\ 'filetype': 'LightlineFiletype', | |||
\ 'cocstatus': 'LightlineCoc', | |||
\ }, | |||
\ 'component_type': { | |||
\ 'buffers': 'tabsel', | |||
\ 'trailing': 'warning' | |||
\ }, | |||
\ } | |||
function! s:trim(maxlen, str) abort | |||
let trimed = len(a:str) > a:maxlen ? a:str[0:a:maxlen] . '..' : a:str | |||
return trimed | |||
endfunction | |||
function! LightlineCoc() abort | |||
if winwidth(0) < 60 | |||
return '' | |||
endif | |||
return coc#status() | |||
endfunction | |||
function! LightlinePercent() abort | |||
if winwidth(0) < 60 | |||
return '' | |||
endif | |||
let l:percent = line('.') * 100 / line('$') . '%' | |||
return printf('%-4s', l:percent) | |||
endfunction | |||
function! LightlineLineinfo() abort | |||
if winwidth(0) < 86 | |||
return '' | |||
endif | |||
let l:current_line = printf('%-3s', line('.')) | |||
let l:max_line = printf('%-3s', line('$')) | |||
let l:lineinfo = ' ' . l:current_line . '/' . l:max_line | |||
return l:lineinfo | |||
endfunction | |||
function! LightlineFilename() abort | |||
let l:prefix = expand('%:p') =~? "fugitive://" ? '(fugitive) ' : '' | |||
let l:maxlen = winwidth(0) - winwidth(0) / 2 | |||
let l:relative = expand('%:.') | |||
let l:tail = expand('%:t') | |||
let l:noname = 'No Name' | |||
if winwidth(0) < 50 | |||
return '' | |||
endif | |||
if winwidth(0) < 86 | |||
return l:tail ==# '' ? l:noname : l:prefix . s:trim(l:maxlen, l:tail) | |||
endif | |||
return l:relative ==# '' ? l:noname : l:prefix . s:trim(l:maxlen, l:relative) | |||
endfunction | |||
function! LightlineFullname() abort | |||
let l:relative = expand('%') | |||
return l:relative | |||
endfunction | |||
function! LightlineModified() abort | |||
return &modified ? '*' : '' | |||
endfunction | |||
function! LightlineMode() abort | |||
let ftmap = { | |||
\ 'coc-explorer': 'EXPLORER', | |||
\ 'fugitive': 'FUGITIVE', | |||
\ 'vista': 'OUTLINE' | |||
\ } | |||
return get(ftmap, &filetype, lightline#mode()) | |||
endfunction | |||
let g:lightline.component_function = { 'lineinfo': 'LightlineLineinfo' } | |||
function! LightlineLineinfo() abort | |||
if winwidth(0) < 86 | |||
return '' | |||
endif | |||
let l:current_line = printf('%-3s', line('.')) | |||
let l:max_line = printf('%-3s', line('$')) | |||
let l:lineinfo = ' ' . l:current_line . '/' . l:max_line | |||
return l:lineinfo | |||
endfunction | |||
function! LightlineReadonly() abort | |||
let ftmap = { | |||
\ 'coc-explorer': '', | |||
\ 'fugitive': '', | |||
\ 'vista': '' | |||
\ } | |||
let l:char = get(ftmap, &filetype, '') | |||
return &readonly ? l:char : '' | |||
endfunction | |||
function! LightlineGitbranch() abort | |||
if exists('*fugitive#head') | |||
let maxlen = 20 | |||
let branch = fugitive#head() | |||
return branch !=# '' ? ' '. s:trim(maxlen, branch) : '' | |||
endif | |||
return fugitive#head() | |||
endfunction | |||
function! LightlineFiletype() abort | |||
let l:icon = WebDevIconsGetFileTypeSymbol() | |||
return winwidth(0) > 86 ? (strlen(&filetype) ? &filetype . ' ' . l:icon : l:icon) : '' | |||
endfunction | |||
function! String2() | |||
return 'BUFFERS' | |||
endfunction | |||
function! SmartTabsIndicator() abort | |||
let tabs = lightline#tab#tabnum(tabpagenr()) | |||
let tab_total = tabpagenr('$') | |||
return tabpagenr('$') > 1 ? ('TABS ' . tabs . '/' . tab_total) : '' | |||
endfunction | |||
" autoreload | |||
command! LightlineReload call LightlineReload() | |||
function! LightlineReload() abort | |||
call lightline#init() | |||
call lightline#colorscheme() | |||
call lightline#update() | |||
endfunction | |||
let g:lightline#trailing_whitespace#indicator = '' |
@ -1,3 +0,0 @@ | |||
let g:lightline#bufferline#show_number = 1 | |||
let g:lightline#bufferline#shorten_path = 0 | |||
let g:lightline#bufferline#unnamed = '[No Name]' |
@ -1,16 +0,0 @@ | |||
let g:lightline = { | |||
\ 'colorscheme': 'material_vim', | |||
\ 'active': { | |||
\ 'left': [ [ 'mode', 'paste' ], [ 'readonly', 'filename', 'modified' ] ] | |||
\ }, | |||
\ 'tabline': { | |||
\ 'left': [ ['buffers'] ], | |||
\ 'right': [ ['close'] ] | |||
\ }, | |||
\ 'component_expand': { | |||
\ 'buffers': 'lightline#bufferline#buffers' | |||
\ }, | |||
\ 'component_type': { | |||
\ 'buffers': 'tabsel' | |||
\ } | |||
\ } |