RinRi-D a30576f93f | há 4 anos | |
---|---|---|
.. | ||
ftplugin | há 4 anos | |
lib | há 4 anos | |
python | há 4 anos | |
syntax | há 4 anos | |
Readme.md | há 4 anos | |
package.json | há 4 anos | |
webpack.config.js | há 4 anos |
Snippets solution for coc.nvim
Snippet preview requires neovim 0.4 or latest vim8
It’s capable of:
snippets.editSnippets
command for edit user snippets of current filetype.Note: some features of ultisnips and snipmate format snippets not supported, checkout faq.
:CocList snippets
, sorted by mru.In your vim/neovim, run command:
:CocInstall coc-snippets
" Use <C-l> for trigger snippet expand.
imap <C-l> <Plug>(coc-snippets-expand)
" Use <C-j> for select text for visual placeholder of snippet.
vmap <C-j> <Plug>(coc-snippets-select)
" Use <C-j> for jump to next placeholder, it's default of coc.nvim
let g:coc_snippet_next = '<c-j>'
" Use <C-k> for jump to previous placeholder, it's default of coc.nvim
let g:coc_snippet_prev = '<c-k>'
" Use <C-j> for both expand and jump (make expand higher priority.)
imap <C-j> <Plug>(coc-snippets-expand-jump)
Make <tab>
used for trigger completion, completion confirm, snippet expand and jump like VSCode.
inoremap <silent><expr> <TAB>
\ pumvisible() ? coc#_select_confirm() :
\ coc#expandableOrJumpable() ? "\<C-r>=coc#rpc#request('doKeymap', ['snippets-expand-jump',''])\<CR>" :
\ <SID>check_back_space() ? "\<TAB>" :
\ coc#refresh()
function! s:check_back_space() abort
let col = col('.') - 1
return !col || getline('.')[col - 1] =~# '\s'
endfunction
let g:coc_snippet_next = '<tab>'
Note: coc#_select_confirm()
helps select first complete item when there’s
no complete item selected, neovim 0.4 or latest vim8 required for this function
work as expected.
Some ultisnips features are not supported:
Note: python regex in snippet are converted to javascript regex, however,
some regex patterns can’t be supported by javascript, including
\u
(?s)
\Z
(?(id/name)yes-pattern|no-pattern)
.
snippets.priority
: priority of snippets source, default 90
.
snippets.editSnippetsCommand
: Open command used for snippets.editSnippets command, use coc.preferences.jumpCommand by default.
snippets.trace
: Trace level of snippets channel.
snippets.enableStatusItem
: Enable status item in g:coc_status
used for statusline.
snippets.extends
: extends filetype’s snippets with other filetypes, example:
{
"cpp": ["c"],
"javascriptreact": ["javascript"],
"typescript": ["javascript"]
}
snippets.userSnippetsDirectory
, Directory that contains custom user ultisnips snippets, use ultisnips in extension root by default.
snippets.shortcut
, shortcut in completion menu, default S
.
snippets.autoTrigger
: enable auto trigger for auto trigger ultisnips snippets, default true
.
snippets.triggerCharacters
: trigger characters for completion, default []
.
snippets.loadFromExtensions
: load snippets from coc.nvim extensions, default: true
.
snippets.convertToSnippetsAction
: Add convert to snippet to code action list.
snippets.textmateSnippetsRoots
: absolute directories that contains textmate/VSCode snippets to load.
snippets.ultisnips.enable
: enable load UltiSnips snippets, default true
.
snippets.ultisnips.usePythonx
: use pythonx
for eval python code when possible, default true
.
snippets.ultisnips.pythonVersion
: when usePythonx
is false, python version to use for
python code, default to 3
.
snippets.ultisnips.directories
: directories that searched for snippet files,
could be subfolder in every $runtimepath or absolute paths, default: ["UltiSnips"]
snippets.snipmate.enable
: enable load snipmate snippets, default true
.
snippets.snippets.author
: author name used for g:snips_author
:CocList snippets
to open snippets list.:CocCommand snippets.editSnippets
to edit user snippet of current filetype.:CocCommand snippets.openSnippetFiles
to open snippet files of current filetype.Q: How to check if a snippet successfully loaded?
A: Use command :CocCommand workspace.showOutput snippets
Q: Some ultisnips snippet not works as expected.
A: Reformat after change of placeholder feature can’t be supported for now, and some regex pattern can’t be converted to javascript regex pattern, so the snippet can be failed to load.
Q: Where to get snippets?
A: One solution is install honza/vim-snippets which is widely used.
Q: Do I need to install Ultisnips.
A: No! This extension is designed to work with or without Ultisnips, you can still install Ultisnips, but this extension would not run any code or read configuration from it.
Q: How to check jumpable or expandable at current position.
A: Use functions provided by coc.nvim: coc#expandable()
coc#jumpable()
and coc#expandableOrJumpable()
.
Q: It doesn’t load snippets from vim-go.
A: It uses g:UltiSnipsSnippetDirectories
which is not supported, you can
add settings:
snippets.ultisnips.directories: [
"UltiSnips",
"gosnippets/UltiSnips"
],
to load it.
Q: How could I add custom UltiSnips snippets.
A: You can create snippet files in folder: $VIMCONFIG/coc/ultisnips
, use
command :CocCommand snippets.editSnippets
to open user snippet of current
filetype.
MIT