guides

Espanso के YAML Config से GUI Text Expander में Migration करना

द्वारा Lightning Assist टीम14 सितंबर 20269 मिनट पढ़ने
espansoyamlmigrationguitext-expanderlinuxwindowsmacos
साझा करें:

त्वरित उत्तर: Espanso हर स्निपेट को YAML मैच फ़ाइलों (~/.config/espanso/match/*.yml) के अंदर trigger/replace जोड़ी के रूप में स्टोर करता है, जिसका मतलब है कि कोई स्निपेट जोड़ने या संपादित करने के लिए टेक्स्ट एडिटर खोलना, YAML की इंडेंटेशन नियमों का पालन करना और सेवा को पुनः आरंभ करना पड़ता है। Lightning Assist जैसे GUI टेक्स्ट एक्सपैंडर में माइग्रेट करने का मतलब है कि हर मैच एक विज़ुअल एडिटर में स्निपेट बन जाता है — वही ट्रिगर टेक्स्ट, वही रिप्लेसमेंट, लेकिन फ़ाइल की जगह एक फॉर्म फ़ील्ड। Lightning Assist 2.6 से मैच फ़ाइलें सीधे इम्पोर्ट की जा सकती हैं: .yml चुनें, और हर trigger/replace जोड़ी स्निपेट बन जाती है, जिसमें {{date}}, {{clipboard}} और फॉर्म वेरिएबल प्लेसहोल्डर में बदल जाते हैं। केवल शेल-कमांड और regex मैच अभी भी मैन्युअल समीक्षा की जरूरत होती है।

प्रकटीकरण: हम Lightning Assist बनाते हैं, एक paid text expander — इसलिए Espanso हमारा प्रतिस्पर्धी है। Espanso मुफ़्त और open source है, और नीचे दिया गया हर fix ख़ुद Espanso के लिए है; किसी के लिए भी tool बदलने की ज़रूरत नहीं।

अगर आपने कभी ~/.config/espanso/match/base.yml खोली ही नहीं है, तो यह सब आपके लिए कोई मायने नहीं रखेगा — और यह गाइड ठीक उन्हीं लोगों के लिए है: जिन्होंने Espanso चलाना शुरू किया, एक दर्जन snippets जोड़े, और अब सोच रहे हैं कि क्या ऐसा कोई तरीका है जहाँ उन्हें YAML के बारे में बिल्कुल भी सोचना न पड़े।

Espanso का YAML Config घर्षण (Friction) क्यों बन जाता है

Espanso सच में अच्छी तरह बनाया गया सॉफ़्टवेयर है। यह मुफ़्त है, open-source है, cross-platform है, और इसका file-based मॉडल कोई चूक नहीं बल्कि एक सोचा-समझा design फ़ैसला है — YAML portable है, diff करने लायक है, और script से चलाया जा सकता है। घर्षण बाद में सामने आता है, जब आप इसे रोज़मर्रा में वाकई इस्तेमाल करना शुरू करते हैं:

Match files आपके filesystem में बिखरी हुई होती हैं। Espanso अपने config को match/ folder (क्या expand करना है) और config/ folder (expansion कैसे व्यवहार करता है) में व्यवस्थित करता है, जिसकी शुरुआत match/base.yml से होती है। जैसे-जैसे आपके snippets की संख्या बढ़ती है, आप या तो उसी एक file में जोड़ते रहते हैं या और .yml files में बाँटना शुरू कर देते हैं — किसी भी सूरत में, छह महीने बाद "pricing वाली वो snippet" ढूँढ़ने का मतलब है files खोलकर आँखों से स्कैन करना, क्योंकि कोई search box नहीं है।

Indentation ही syntax है। एक basic match ऐसा दिखता है:

matches:
  - trigger: ":br"
    replace: "Best Regards,\nJon Snow"

Espanso का अपना documentation भी इस बारे में सीधी बात कहता है: "सुनिश्चित करें कि आप indentation शामिल करें, वरना यह valid YAML syntax नहीं होगा।" यह उस developer के लिए ठीक है जो text editor में सहज है, और यह बिल्कुल वही चीज़ है जो चुपचाप टूट जाती है जब आप Slack से कोई snippet paste करते हैं, या किसी multi-line block को copy करते हैं और whitespace साथ नहीं आता। आमतौर पर पता चलने का तरीका यही होता है कि trigger बस expand ही नहीं होता — न कोई dialog, न कोई red squiggle, बस एक snippet जो चुपचाप कुछ नहीं करता, जब तक आप भटकी हुई किसी space को ढूँढ़ नहीं निकालते।

न sync, न team। Espanso जान-बूझकर सब कुछ locally स्टोर करता है — privacy के लिहाज़ से यह वाकई अच्छा है, लेकिन इसका मतलब है कि अपने snippets को दूसरी मशीन पर ले जाना एक मैनुअल file copy, एक Dropbox folder, या आपके खुद संभाले हुए personal git repo के ज़रिए होता है। कोई account नहीं, कोई built-in multi-device sync नहीं, और किसी colleague को अपनी snippet library सौंपने का कोई तरीका नहीं है सिवाय उन्हें .yml files भेजने और सही folder में डालने के लिए कहने के।

टेस्ट करने के लिए हर बार restart। किसी match file को edit करके यह पुष्टि करना कि वह काम कर गई, आमतौर पर इसका मतलब है save करना, जिस भी ऐप में टेस्ट कर रहे हैं वहाँ वापस जाना, trigger टाइप करना, और — अगर वह fire न हो — वापस जाकर file चेक करना। यह एक छोटा loop है, लेकिन ऐसा loop है जिसे आप हर एक बदलाव के लिए, हमेशा के लिए दोहराते हैं।

इसका मतलब यह नहीं कि Espanso खराब सॉफ़्टवेयर है। यह सिर्फ़ उन लोगों के लिए बना सॉफ़्टवेयर है जिन्हें config को code की तरह treat करने में सहजता है। अगर आप अपना समय ऐसे नहीं बिताना चाहते, तो इसका हल एक GUI है — कोई "बेहतर" YAML editor नहीं।

GUI Equivalent असल में कैसा दिखता है

किसी GUI text expander में, एक snippet एक file नहीं बल्कि एक row होती है। आप एक panel खोलते हैं (Lightning Assist में इसे "My Snippets" कहा जाता है), "Create Snippet" पर click करते हैं, एक field में trigger और दूसरे में expansion टाइप करते हैं, और save कर देते हैं। न कोई file ढूँढ़नी है, न कोई service restart करनी है, और न ही indentation सही करने की ज़रूरत है — क्योंकि indentation जैसी कोई चीज़ ही नहीं है। rich text, HTML formatting, और multi-line content — सब कुछ बिना किसी escaping के सीधे expansion field में टाइप या paste किया जा सकता है। Snippets को आप खुद नाम दिए हुए folders में व्यवस्थित करते हैं, और files स्कैन करने के बजाय अपनी पूरी library में search कर सकते हैं।

Trade-off वही है जिसकी आप उम्मीद करेंगे: आप direct file access छोड़ देते हैं (न snippet history को git-diff कर सकते हैं, न Vim में edit) — बदले में शुरुआत से ही YAML की किसी भी mechanics की ज़रूरत नहीं रहती।

Espanso → Lightning Assist: Concept Map

अगर आप पहले से Espanso की शब्दावली में सोचते हैं, तो यहाँ बताया गया है कि हर हिस्सा कैसे मैप होता है:

Espanso Concept YAML में GUI Equivalent
Match .yml file में matches: के नीचे की एक entry एक snippet — Snippets panel में एक row
Trigger trigger: ":br" Trigger field — वही abbreviation सीधे टाइप करें, colon रखना ज़रूरी नहीं जब तक आप खुद न चाहें
Replace replace: "Best Regards,\nJon Snow" Snippet का expansion text — rich text, HTML, और multi-line content पहले से समर्थित
Vars / extensions (date, shell, clipboard, form) किसी variable type को reference करता vars: block expansion में डाले गए Placeholders[#Date#] और [#Name#]
Match files (base.yml, custom .yml) ~/.config/espanso/match/ के अंदर की files Snippets panel में Folders — filename की बजाय visually organize करें
Reload / espanso restart बदलाव लागू करने के लिए मैनुअल service restart कुछ करने की ज़रूरत नहीं — save करते ही snippets live हो जाते हैं
Regex triggers, shell-command matches YAML + scripting, Espanso-specific यहाँ दोहराया नहीं गया। अगर यह आपके workflow का मूल हिस्सा है, तो इन मामलों के लिए Espanso पर बने रहें

वह आख़िरी row मायने रखती है: यह एक migration guide है, यह दावा नहीं कि "Lightning Assist वह सब कुछ कर सकता है जो Espanso कर सकता है।" Regex-pattern triggers और shell-command पर आधारित matches Espanso की असली ताक़त हैं जिनका यहाँ कोई GUI equivalent नहीं है।

चरण-दर-चरण: अपनी मैच फ़ाइलें इम्पोर्ट करना

7 सितंबर 2026 को अपडेट: Lightning Assist अब Espanso मैच फ़ाइलों को सीधे इम्पोर्ट करता है, इसलिए इस गाइड में पहले वर्णित एक-एक करके पुनर्निर्माण अब आवश्यक नहीं है।

  1. अपने मौजूदा मैच ढूंढें। espanso path चलाएं और उस match फ़ोल्डर को खोलें जिस ओर यह इंगित करता है (आमतौर पर ~/.config/espanso/match/)। वहां हर .yml फ़ाइल जिसमें matches: सूची होती है, वैसे ही इम्पोर्ट की जा सकती है; इन्हें पहले मर्ज करने की जरूरत नहीं।
  2. GUI एक्सपैंडर इंस्टॉल करें और कोई कॉन्फ़िग फ़ाइल स्किप करें। Lightning Assist को 14 दिनों के लिए मुफ्त आज़माएं — कोई क्रेडिट कार्ड नहीं। ऐप सीधे अपने स्निपेट पैनल में खुलता है; पहले कोई सेटअप फ़ाइल लिखनी नहीं होती।
  3. हर मैच फ़ाइल इम्पोर्ट करें। My Snippets में Import पर क्लिक करें और .yml फ़ाइल चुनें। हर मैच एक स्निपेट बन जाता है: trigger (या triggers की पहली प्रविष्टि) ट्रिगर बनती है, replace विस्तार बनता है, और label मौजूद होने पर स्निपेट का नाम बनता है। अग्रणी प्रतीक रखे जाते हैं, इसलिए :br वैसे ही रहता है। इम्पोर्ट हर योजना पर उपलब्ध है। मुफ्त योजना में हर इम्पोर्ट में 5 मैच तक आते हैं और लाइब्रेरी में 20 तक हो सकते हैं; 14-दिन के ट्रायल में प्रति इम्पोर्ट सीमा 20 तक बढ़ जाती है, और Pro योजना दोनों सीमाएं हटा देती है। जो कुछ भी बाहर रह जाता है, वह सूचीबद्ध होता है, चुपचाप नहीं हटाया जाता।
  4. वेरिएबल्स जांचें। {{date}}, {{clipboard}} और {{form.field}} वेरिएबल्स संबंधित प्लेसहोल्डर्स में बदल जाते हैं, जैसे [#date#] और [#clipboard#]। जो कुछ इम्पोर्टर अनुवाद नहीं कर पाता — शेल-कमांड वेरिएबल्स, स्क्रिप्ट्स, regex ट्रिगर्स — वे विस्तार टेक्स्ट में दिखाई देते हैं ताकि आप देख सकें और सुधार सकें। अगर वे किसी मैच के लिए महत्वपूर्ण हैं, तो वह मैच Espanso में छोड़ दें।
  5. अपना ट्रिगर मोड सेट करें। As-You-Type विस्तार (ट्रिगर टाइप करते ही वह इनलाइन विस्तार हो जाता है) डिफ़ॉल्ट है और इसे सेटअप की जरूरत नहीं। अगर आप ट्रिगर टाइप करने के बाद कोई कुंजी दबाना चाहते हैं, तो इसे Settings → Triggers में एक बार सेट करें।
  6. कुछ भी हटाने से पहले परीक्षण करें। हर स्निपेट को एक स्क्रैच डॉक्यूमेंट में आज़माएं। जब तक आप पुष्टि न कर लें कि माइग्रेट किया गया सेट आपकी अपेक्षा के अनुसार काम करता है, तब तक अपना Espanso कॉन्फ़िग बरकरार रखें — अस्थायी रूप से दोनों साथ-साथ चलाने में कोई नुकसान नहीं।

इम्पोर्ट में कुछ सेकंड लगते हैं; समय मुख्य रूप से चरण 4 में जाता है, जहां शेल-कमांड या regex वाले मैचों की समीक्षा होती है। साधारण टेक्स्ट मैचों की सामान्य लाइब्रेरी के लिए, पूरा माइग्रेशन कुछ मिनटों में हो जाता है।

आप क्या पाते हैं, और क्या छोड़ते हैं

आप क्या पाते हैं: कोई कॉन्फ़िग फ़ाइलें नहीं, परीक्षण के लिए पुनः आरंभ करने का चक्र नहीं, फ़ोल्डरों में व्यवस्थित खोजने योग्य स्निपेट लाइब्रेरी, AI कमांड जो हॉटकी से चयनित टेक्स्ट को पुनर्लेखित या अनुवाद करते हैं, उसी ऐप में पुश-टू-टॉक वॉइस-टू-टेक्स्ट, डिवाइसेज के बीच स्वचालित क्लाउड सिंक, और टीम स्निपेट शेयरिंग यदि जरूरत हो। यह सब Windows, macOS, और Linux पर एक ही अकाउंट से चलता है।

आप क्या छोड़ते हैं: Espanso हमेशा के लिए मुफ्त और ओपन-सोर्स है — Lightning Assist का टेक्स्ट एक्सपैंशन भी मुफ्त और असीमित है, जिसमें 20 स्निपेट, फ़ोल्डर और एक टीम शामिल है — लेकिन बड़ी लाइब्रेरी और अधिक टीमों के लिए $5.99/महीना शुल्क है 14-दिन के ट्रायल के बाद (Pro योजना में AI क्रेडिट्स की मासिक आवंटन भी शामिल है)। आप regex-आधारित ट्रिगर्स और शेल-कमांड मैच भी खो देते हैं, जिनका GUI मॉडल में कोई समकक्ष नहीं है। अगर ये कारण हैं कि आप Espanso इस्तेमाल करते हैं, तो यह माइग्रेशन आपके लिए नहीं है — और यह Espanso पर बने रहने का एक वैध कारण है।

अगर आप पूरी तरह Espanso पारिस्थितिकी तंत्र छोड़ना नहीं चाहते, तो समुदाय प्रोजेक्ट्स मौजूद हैं — espansoGUI (Rust/Iced, Flathub पर), EspansoEdit (Windows फ्रीवेयर), और EspansoGUI IDE। इन्हें आज़माना फायदेमंद है, लेकिन ये सभी YAML फ़ाइलों के ऊपर अलग, स्वयंसेवक-रक्षित परत हैं; Espanso के पास अभी भी आधिकारिक GUI नहीं है सिवाय इसके सर्च विंडो के (कोर प्रोजेक्ट का नवीनतम स्थिर संस्करण v2.4.1, 2 सितंबर 2026)। अगर आप ऐसा टूल चाहते हैं जहाँ GUI ही उत्पाद हो, तो यही वह अंतर है जिसे यह माइग्रेशन पूरा करता है।

अक्सर पूछे जाने वाले प्रश्न

क्या मैं अपने Espanso YAML फ़ाइलें सीधे इम्पोर्ट कर सकता हूँ?

हाँ। My Snippets में Import पर क्लिक करें और कोई मैच फ़ाइल (.yml) चुनें। हर trigger/replace जोड़ी एक स्निपेट बन जाती है, label नाम बनता है, और {{date}}, {{clipboard}} और फॉर्म फ़ील्ड प्लेसहोल्डर में बदल जाते हैं। शेल-कमांड वेरिएबल्स और regex ट्रिगर्स का कोई समकक्ष नहीं है और वे समीक्षा के लिए दिखाई देते हैं।

क्या मैं अपने regex-आधारित ट्रिगर्स या शेल-कमांड मैच खो दूंगा?

हाँ। वे Espanso-विशिष्ट क्षमताएं हैं जो YAML/स्क्रिप्टिंग मॉडल पर आधारित हैं, और यहाँ उनका कोई GUI समकक्ष नहीं है। अगर regex ट्रिगर्स या शेल-बैक्ड मैच आपके सेटअप के केंद्र में हैं, तो उन के लिए Espanso का उपयोग जारी रखें और GUI एक्सपैंडर केवल अपने सरल, स्थिर स्निपेट्स के लिए विचार करें।

क्या मैं वही ट्रिगर टेक्स्ट रख सकता हूँ, जैसे :br या /addr?

हाँ। ट्रिगर फ़ील्ड किसी भी टेक्स्ट को स्वीकार करता है जो आप टाइप करें, जिसमें अग्रणी : या / भी शामिल है अगर वह आपकी आदत है। माइग्रेशन के दौरान अपनी संक्षिप्त शैली बदलने की कोई बाध्यता नहीं है।

क्या कोई आधिकारिक Espanso GUI है जिसे मैं पूरी तरह टूल बदलने से पहले आज़माऊं?

कोई आधिकारिक GUI नहीं है। espansoGUI, EspansoEdit, और EspansoGUI IDE जैसे समुदाय प्रोजेक्ट्स एक ग्राफिकल परत जोड़ते हैं, लेकिन वे अलग, स्वयंसेवक-रक्षित टूल हैं जो वही YAML फ़ाइलों पर आधारित हैं — आप अभी भी कच्चे कॉन्फ़िग से एक कदम दूर हैं। अगर आप चाहते हैं कि GUI पूरा उत्पाद हो, न कि एक ऐड-ऑन, तो यही वह अंतर है जो यह माइग्रेशन लाता है।

संबंधित लेख

स्रोत