Browse Source

Update for coc.nvim

master
Schneider 5 years ago
parent
commit
d6934d3b35
Signed by: schneider GPG Key ID: 5644E10F79104487
  1. 42
      README.md
  2. 147
      init.vim

42
README.md

@ -11,9 +11,9 @@ Windows kann ich allerdings überhaupt nicht empfehlen.
## Hilfreiche Links und Infos ## Hilfreiche Links und Infos
- [Alles wichtige in einem Bild](https://www.reddit.com/r/vim/comments/32r85c/this_is_my_favorite_vim_cheat_sheet_does_anyone/) (Vermutlich das Beste Cheatsheet)
- [Vim Cheat Sheet Website](https://vim.rtorr.com/)
- [vimawesome.com](https://vimawesome.com/) (Auflistung vieler hilfreicher Plugins)
- [Alles wichtige in einem Bild](https://www.reddit.com/r/vim/comments/32r85c/this_is_my_favorite_vim_cheat_sheet_does_anyone/) (Vermutlich das Beste Cheatsheet)
- [Vim Cheat Sheet Website](https://vim.rtorr.com/)
- [vimawesome.com](https://vimawesome.com/) (Auflistung vieler hilfreicher Plugins)
## Abhängigkeiten ## Abhängigkeiten
@ -59,12 +59,11 @@ jeden Fall jedes einmal genauer an.
### [vim-plug](https://github.com/junegunn/vim-plug) ### [vim-plug](https://github.com/junegunn/vim-plug)
Packagemanage für Vim.
Packagemanager für Vim.
Neue Plugins können über einen Eintrag in der init.vim installiert werden. Neue Plugins können über einen Eintrag in der init.vim installiert werden.
Schaut euch die Syntax bei den vorhandenen Beispielen an. Schaut euch die Syntax bei den vorhandenen Beispielen an.
Nachdem ihr einen Eintrag der Form `Plug 'url/repo' eingetragen und gespeichert
habt, startet nvim neu, führt `:PlugInstall` aus und startet nvim nochmal neu.
Nachdem ihr einen Eintrag der Form `Plug 'url/repo' eingetragen und gespeichert habt, startet nvim neu, führt`:PlugInstall` aus und startet nvim nochmal neu.
Dann sind die Plugins einsatzbereit. Dann sind die Plugins einsatzbereit.
### [NERD Commenter](https://github.com/scrooloose/nerdcommenter) ### [NERD Commenter](https://github.com/scrooloose/nerdcommenter)
@ -92,26 +91,27 @@ Per `:Gstatus` die geänderten Dateien anzeigen lassen. `<Ctrl> n` lässt den
Cursor zur nächsten Datei springen. Mit `-` wird die Datei zum Commit Cursor zur nächsten Datei springen. Mit `-` wird die Datei zum Commit
hinzugefügt, per `cc` die Commit-Message geöffnet. Wenn der Buffer gespeichert hinzugefügt, per `cc` die Commit-Message geöffnet. Wenn der Buffer gespeichert
wird, wird der Commit ausgeführt. wird, wird der Commit ausgeführt.
Gerade in Projekten mit mehereren Entwicklern ist [git blame](https://www.git-scm.com/docs/git-blame) immer wieder hilfreich.
Per `:Gblame` wird ein Fenster auf der linken Seite geöffnet, welches für jede
Zeile den letzten Bearbeiter und den dazugehörigen Commit zeigt.
### [deoplete.nvim](https://github.com/Shougo/deoplete.nvim)
### [coc.nvim](https://github.com/neoclide/coc.nvim)
Codevervollständigungs-Engine
Codevervollständigung per Languageserver.
Dieses Plugin bietet das Gerüst, um Codevervollständigung für andere Sprachen
anzubieten. Grob gesagt stellt es das Fenster, in dem die Vorschläge angezeigt
werden, zur Verfügung.
Mithilfe der Einstellungen in der init.vim kann per `<TAB>` zwischen den
Vorschlägen gewechselt werden.
Ein Code-Editor ohne vernünftige Vervollständigung ist kaum sinnvoll nutzbar.
Seit kurzem habe ich dafür coc.nvim entdeckt, welches mit dem Language Server
Protocol (vielleicht schon aus arbeitet, und somit vorhandene Vervollständigungen für die jeweiligen
Sprachen nutzen kann.
### [Neosnippet](https://github.com/Shougo/neosnippet.vim)
Auf der Website findet sich eine Liste mit unterstützten Sprachen und
lsp-servern.
Diese sind als Plugins für coc.nvim realisiert und werden mit dem Kommando
`CocInstall coc-php` installiert.
Snippetunterstützung für Vim
Mit diesem Plugin werden Snippets, also kleine Templates, die erweitert werden,
unterstützt.
So kann z.B. in einem Markdown-Dokument aus `linkurl` mit `<ctrl> k` `[link](http://)` werden.
Mit `<ctrl> k` wird außerdem zwischen den Argumenten gewechselt.
Dieses Plugin bietet noch weitere Features, zum Beispiel snippets per
[coc-snippets](https://github.com/neoclide/coc-snippets). Dies kann per
`CocInstall coc-snippets` installiert werden.
### [easymotion](https://github.com/easymotion/vim-easymotion) ### [easymotion](https://github.com/easymotion/vim-easymotion)

147
init.vim

@ -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')

Loading…
Cancel
Save