मैं एक ही स्निपेट के लिए कितने ट्रिगर का उपयोग कर सकता हूं?


11

मैंने एक स्निपेट बनाया है जिसे मैं अलग-अलग ट्रिगर देना चाहता हूं, इसलिए कहने के बजाय triggerमैं इसे भी ट्रिगर करना चाहता हूं myothertrigger:

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

क्या स्निपेट की नकल करने के बजाय ऐसा करने का एक आसान तरीका है?

संपादित करें: स्पष्ट होने के लिए, मैं UltiSnips का उपयोग कर रहा हूं , लेकिन अगर कोई बेहतर प्लगइन है तो मैं उस पर गौर कर सकता हूं।


2
उत्तर आपके द्वारा उपयोग किए जा रहे स्निपेट इंजन पर निर्भर करेगा। म्यू-टेम्प्लेट के साथ आप एक स्निपेट को दूसरे से शामिल कर सकते हैं, स्निपेट फ़ाइल को एक अलग नाम से कॉपी कर सकते हैं या सिंबल लिंक बना सकते हैं। मुझे यकीन नहीं है कि अन्य इंजन इसे अनुमति दे सकते हैं। हो सकता है कि किसी दिन वे "कॉलर" स्निपेट्स से स्निपेट शामिल किए जाने का समर्थन करने के लिए आते हैं। शायद आप अपने स्निपेट के मूल को अजगर या विम फ़ंक्शन में परिभाषित कर सकते हैं और क्या आपके स्निपेट्स उसी फ़ंक्शन को कहते हैं?
ल्यूक हर्मिट

3
प्रश्न को टैग किया गया है plugin-ultisnips, इसलिए मुझे लगता है कि ओपी अल्टिसनिप का उपयोग कर रहा है।
एवरग्रीनट्री

मेरी गलती ^ ^ '(plateTemplate बेहतर नहीं है, बस बहुत अलग है, पुराना है, और मेरी ज़रूरतों के प्रति अधिक अनुकूल है (मैं इसे बनाए रख रहा हूं): मैंने रूट स्निपेट्स हैं जो उन कार्यों के रूप में व्यवहार करते हैं जिन्हें मैं विभिन्न विकल्पों के साथ कॉल कर सकता हूं। अलग-अलग लेकिन बहुत करीबी बातें। C ++ में I के पास बेस-क्लास, वैल्यू-क्लास, अपवाद-वर्ग ... के लिए स्निपेट हैं ... जो सभी क्लास-स्निपेट + फ़ंक्शन-स्निपेट + के एक ही सेट पर निर्भर करते हैं ... लेकिन जैसा कि मैंने बताया, वाक्यविन्यास पूरी तरह से अलग है, और प्लेसहोल्डर सुविधा आपके द्वारा उपयोग किए जाने वाले की तुलना में कम एर्गोनोमिक है। आप जो देख रहे हैं वह करना आसान होगा, लेकिन प्रवास के लायक नहीं होना चाहिए)
ल्यूक हर्मिट

2
यदि आप शौगो के neosnippetप्लगइन पर स्विच करते हैं , तो इसके सिंटैक्स में aliasइस उद्देश्य के लिए एक कीवर्ड है।
वैनलेसर

जवाबों:


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)तब बुलाया जाता है जब उल्टिसनिप्स टैबस्टॉप में चला जाता है $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

यहां आपके पास तीन ट्रिगर होंगे inctrue, incfalseऔर incboolयह प्रभावी रूप से समान हैं। एकमात्र दोष यह है कि YouCompleteMe जैसे स्वतः पूर्णता प्लग-इन स्वत: पूर्ण नहीं होंगे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.