UltiSnips プラグインと neosnippet プラグインを同時に使用しようとしています。これは、ある機能とない機能があり、その逆の場合があるためです。したがって、次のようにマップされた Ultisnips と neosnippet :
"UltiSnips
let g:UltiSnipsExpandTrigger="<Tab>"
let g:UltiSnipsJumpForwardTrigger="<Tab>"
let g:UltiSnipsJumpBackwardTrigger="<S-Tab>"`
と
"neosnippet
imap <C-b> <Plug>(neosnippet_expand_or_jump)
smap <C-b> <Plug>(neosnippet_expand_or_jump)
xmap <C-b> <Plug>(neosnippet_expand_target)
キーを押して両方のプラグイン選択モードでジャンプするスーパータブを作成することを決定するまで、すべてが正常に機能しTab
ます。UltiSnip でのジャンプは、プラグイン自体によって設定される次のマップを使用して、Tab キーで行われます。
exec "snoremap <silent> " . g:UltiSnipsExpandTrigger . " <Esc>:call UltiSnips#ExpandSnippetOrJump()<cr>"
選択モードでTabキーでシームレスにジャンプできます。ネオスニペットがタブキーで選択モードにジャンプするには、次のようにsmapを変更します:
smap <Tab> <Plug>(neosnippet_expand_or_jump)
UltiSnips は neosnippet プラグインの後にキーをマッピングするため、これは機能しません。だから私はマッピングを次のように変更します:
au InsertEnter * exec "smap " . g:UltiSnipsExpandTrigger . " <Plug>(neosnippet_expand_or_jump)"
しかし今、選択モードでタブキーを使用してneosnippetの拡張スニペットにジャンプでき、UltiSnipsスニペットにジャンプすることはできません。だから私の質問は、これをどのように達成できるのですか?
私は試した :
au InsertEnter * exec "smap " . g:UltiSnipsExpandTrigger . " neosnippet#expandable_or_jumpable() ? '\<Plug>(neosnippet_expand_or_jump)' : '\<Esc>:call "UltiSnips#ExpandSnippetOrJump()<cr>'"
と
au InsertEnter * exec "smap " . g:UltiSnipsExpandTrigger . " exists(g:ulti_expand_or_jump_res) ? '\<Esc>:call "UltiSnips#ExpandSnippetOrJump()<cr>' : '\<Plug>(neosnippet_expand_or_jump)'"
しかし、それらは機能しません:(