同じスニペットに複数のトリガーを使用するにはどうすればよいですか?


11

私は別のトリガを与えたいスニペットを作ったので、代わりに言っているtrigger私もでそれをトリガーにしたいですmyothertrigger

snippet trigger "just an example" 
my text ...
endsnippet

スニペットをコピーする代わりにこれを行う簡単な方法はありますか?

編集:明確にするために、私はUltiSnipsを使用していますが、より良いプラグインがある場合は、それを調査する可能性があります。


2
答えは、使用しているスニペットエンジンによって異なります。mu-templateでは、あるスニペットを別のスニペットに含めたり、別の名前でスニペットファイルをコピーしたり、シンボリックリンクを作成したりできます。他のエンジンがそれを許可できるかどうかはわかりません。「呼び出し元」スニペットからのスニペットインクルードをサポートするようになる日が来るかもしれません。おそらく、Pythonまたはviml関数でスニペットのコアを定義して、スニペットに同じ関数を呼び出させることができますか?
Luc Hermitte、2016

3
質問にはのタグplugin-ultisnipsが付いているので、OPがultisnipsを使用していると思います。
EvergreenTree

私の間違い^^ '(µテンプレートの方が良くなく、非常に異なっており、古く、自分のニーズに適しています(私はそれを維持しています):さまざまなオプションを使用して呼び出すことができる関数として動作するルートスニペットを作成していますたとえば、C ++では、ベースクラス、値クラス、例外クラスなどのスニペットがあり、それらはすべて同じクラススニペット+関数スニペット+のセットに依存しています...構文は完全に異なり、プレースホルダー機能は使い慣れたものよりも人間工学的ではありません。探していることを行うのは簡単ですが、移行する価値はありません)
Luc Hermitte

2
Shougoのneosnippetプラグインに切り替えると、その構文にはaliasこの目的のためのキーワードがあります。
VanLaser 2016

回答:


8

現在、Ultisnipsでこれを行う方法はありません。ただし、Githubにオープンな機能要求があります。個人的には、ここにも示されているトリガーのエイリアス機能が欲しいのですが。

SirVer(UltiSnipsのメンテナー)もそう考えて、将来的にそれを含めることを期待しましょう:)


5

エイリアスに特定の構文はありませんが、次を使用することで同じ効果を得ることができますpost_jump

# c.snippets
global !p
def expand(snip):
    if snip.tabstop != 1:
        return
    vim.eval('feedkeys("\<C-R>=UltiSnips#ExpandSnippet()\<CR>")')
endglobal

snippet incstdlib "#include <stdlib.h>" !b
#include <stdlib.h> /* exit(), malloc(), free() */
$0
endsnippet

post_jump "expand(snip)"
snippet incexit "#include <stdlib.h>" !b
incstdlib$1
endsnippet

このスニペットファイルでは、トリガーincexitはトリガーの「エイリアス」ですincstdlib。実際にはincexitに展開incstdlibし、expand(snip)タブストップのときUltiSnipsが動くと呼ばれています$1expand(snip)ちょうどVimScript機能実行UltiSnips#ExpandSnippet拡大するincstdlibことの最終拡張形式にします#include <stdlib.h>

別のオプションは代わりにUltiSnips正規表現サポートを使用することです:

snippet "inc(true|false|bool)" "#include <stdbool.h>" r
#include <stdbool.h> /* true, false */
endsnippet

ここには3つのトリガーinctrueincfalseありincbool、それらは実質的に同じです。唯一の欠点は、YouCompleteMeのようなオートコンプリートプラグインがそれらをオートコンプリートしないことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.