@ -14,9 +14,7 @@ Plug 'tpope/vim-surround' " better handling of surrounding markers
Plug 'tpope/vim-ragtag' " Enhancement of surround for html
Plug 'tpope/vim-ragtag' " Enhancement of surround for html
Plug 'tpope/vim-repeat' " repeat last command with .
Plug 'tpope/vim-repeat' " repeat last command with .
Plug 'scrooloose/nerdcommenter' " better commenting
Plug 'scrooloose/nerdcommenter' " better commenting
Plug 'Shougo/deoplete.nvim' , { 'do' : ':UpdateRemotePlugins' } " completion engine
Plug 'Shougo/neosnippet.vim' " snippet engine
Plug 'Shougo/neosnippet-snippets' " snippets
Plug 'neoclide/coc.nvim' , {'branch' : 'release' } " coc - completion
Plug 'easymotion/vim-easymotion' " better motion with leader
Plug 'easymotion/vim-easymotion' " better motion with leader
Plug 'bling/vim-airline' " statusline
Plug 'bling/vim-airline' " statusline
Plug 'w0rp/ale' " asynchronous linting engine
Plug 'w0rp/ale' " asynchronous linting engine
@ -24,6 +22,7 @@ Plug 'godlygeek/tabular' " Align text on symbols
Plug 'junegunn/fzf' , { 'dir' : '~/.fzf' , 'do' : './install --all' } " fuzzy file finder
Plug 'junegunn/fzf' , { 'dir' : '~/.fzf' , 'do' : './install --all' } " fuzzy file finder
Plug 'junegunn/fzf.vim' " vim integration for fzf
Plug 'junegunn/fzf.vim' " vim integration for fzf
Plug 'airblade/vim-gitgutter' " git status in gutter column
Plug 'airblade/vim-gitgutter' " git status in gutter column
Plug 'honza/vim-snippets' " Collection of Snippets, used by coc-snippet
" All of your Plugins must be added before the following line
" All of your Plugins must be added before the following line
call plug #end ( ) " required
call plug #end ( ) " required
@ -77,27 +76,127 @@ cmap w!! w !sudo tee > /dev/null %
let g :airline #extensions #ale #enabled = 1
let g :airline #extensions #ale #enabled = 1
" Completion settings
" Completion settings
let g :deoplete #enable_at_startup = 1
" Use TAB to cycle between matches
inoremap < silent > < expr > < tab > pumvisible ( ) ? "\<c-n>" : "\<tab>"
inoremap < silent > < expr > < s - tab > pumvisible ( ) ? "\<c-p>" : "\<s-tab>"
let g :deoplete #ignore_sources = get ( g :, 'deoplete#ignore_sources' , {})
let g :deoplete #ignore_sources .php = ['omni' ]
" Neosnippet Settings
imap < C - k > < Plug > ( neosnippet_expand_or_jump )
smap < C - k > < Plug > ( neosnippet_expand_or_jump )
xmap < C - k > < Plug > ( neosnippet_expand_target )
" SuperTab like snippets behavior.
"imap <expr><TAB>
" \ pumvisible() ? "\<C-n>" :
" \ neosnippet#expandable_or_jumpable() ?
" \ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
smap < expr > < TAB > neosnippet #expandable_or_jumpable ( ) ?
\ "\<Plug>(neosnippet_expand_or_jump)" : "\<TAB>"
" if hidden is not set, TextEdit might fail.
set hidden
" Some servers have issues with backup files, see #649
set nobackup
set nowritebackup
" Better display for messages
set cmdheight = 2
" You will have bad experience for diagnostic messages when it's default 4000.
set updatetime = 300
" 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 ! 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>"
" 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 > 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 < leader > rn < 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 )
" Use <tab> for select selections ranges, needs server support, like: coc-tsserver, coc-python
nmap < silent > < TAB > < Plug > ( coc - range - select )
xmap < silent > < TAB > < Plug > ( coc - range - select )
xmap < silent > < S - TAB > < Plug > ( coc - range - select - backword )
" Use `:Format` to format current buffer
command ! - nargs = 0 Format :call CocAction ( 'format' )
" Use `:Fold` to fold current buffer
command ! - nargs = ? Fold :call CocAction ( 'fold' , < f - args > )
" use `:OR` for organize import of current buffer
command ! - nargs = 0 OR :call CocAction ( 'runCommand' , 'editor.action.organizeImport' )
" Add status line support, for integration with other plugin, checkout `:h coc-status`
set statusline ^= %{coc #status ( ) }%{get ( b :, 'coc_current_function' , '' ) }
" 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 > :
" For conceal markers.
" For conceal markers.
if has ( 'conceal' )
if has ( 'conceal' )