क्या (टर्मिनल-आधारित) विम में मेनू बनाना और उपयोग करना संभव है?


18

मैं मुख्य रूप से विंडोज-आधारित कंपनी में डेवलपर्स के लिए वर्चुअलाइज्ड लिनक्स बॉक्स (स्थानीय विकास सर्वर के रूप में) स्थापित कर रहा हूं, और कुछ डेवलपर्स वीम (अन्य चीजों के बीच) के बारे में नकारात्मक दरारें डालते हैं। (यह उन्हें किसी तरह से लिनक्स / यूनिक्स का प्रतिनिधित्व करने के लिए लगता है, और यह साबित करता है कि पर्यावरण का उपयोग करना मुश्किल है।) मुझे याद है कि जब मुझे पहली बार विम का उपयोग करने के लिए मजबूर किया गया था, (sysadmins ने emacs स्थापित करने से इनकार कर दिया था!) ​​और मुश्किल प्रारंभिक। सीखने की अवस्था, इसलिए मैं कुछ हद तक सहानुभूतिपूर्ण हूं। यह मेरे लिए है कि, के बजाय उन्हें पेश करने के लिए nano(जो वे शायद कभी नहीं होगा अतीत) यह संक्रमण आसान बनाने के लिए विम में नैनो की तरह मेनू स्थापित करने के लिए संभव हो सकता है। (मैंने उन्हें देने के लिए एक बहुत शुरुआती-दोस्ताना .vimrc फ़ाइल प्राप्त की है, लेकिन इसमें नैनो-स्टाइल मेनू जैसा कुछ भी नहीं है।)

एकमात्र समस्या केवल एक चीज है जो मुझे पता है कि यह दावा करना संभव है कि मेनू में मेनू संभव है (gvim नहीं) काम नहीं किया, और समस्या को ठीक करने के मेरे प्रयास ने मुझे अभी तक हल करने के लिए एक और समस्या के साथ छोड़ दिया। इससे पहले कि मैं बहुत समय बर्बाद करूं, अगर यह वास्तव में संभव है, तो मुझे पता है कि ऐसा करने के बारे में बहुत कम जानकारी है।


3
अब यह विम मदद में है :h console-menus:।
एलेक्सी

@Alexey: धन्यवाद! यह जानना बहुत मददगार है ... अगर मैं "5.2 मेन्यू क्रिएटिंग न्यू मेनस" को स्क्रॉल करता हूं, तो ऐसा लगता है कि यह वही होगा जो मैं चाहता हूं।
आइकनोकॉस्ट

जवाबों:


18

हाँ यह संभव है। आप menu.vim(डिफ़ॉल्ट gvim मेनू परिभाषाएँ) लोड कर सकते हैं , या आप केवल खरोंच से शुरू कर सकते हैं और अपना खुद का बना सकते हैं, फिर उनके माध्यम से एक्सेस कर सकते हैं :emenu। यह आपको नैनो की तरह हमेशा दिखाई देने वाले मेनू नहीं देता है, हालांकि; यह आपको कमांड-लाइन टैब पूर्णता का उपयोग करके मेनू को नेविगेट करने की क्षमता देता है।

यदि उपयोगकर्ता के पास vimrc नहीं है, तो आप vi संगतता को अक्षम करके शुरू करना चाहेंगे:

:set nocompatible

पर स्मार्ट कमांड लाइन पूर्णता सक्षम <Tab>(सक्षम सभी संभव विकल्पों लिस्टिंग, और साथ परिणाम नेविगेट <Up>, <Down>, <Left>, <Right>, और <Enter>):

:set wildmenu

सभी मिलान विकल्पों के बीच बार-बार दबाव चक्र बनाएं:

:set wildmode=full

डिफ़ॉल्ट मेनू लोड करें (यह स्वतः gvim में होगा, लेकिन टर्मिनल vim में नहीं):

:source $VIMRUNTIME/menu.vim

उन चार आदेशों के बाद, आप मैन्युअल रूप से :emenuकमांड पर टैब समापन को पूरा करके मेनू को पूरा कर सकते हैं:emenu<space><tab>

आप टैब कुंजी और तीर कुंजियों का उपयोग करके परिणाम नेविगेट कर सकते हैं, और कुंजी दर्ज करें (यह सबमेन को विस्तारित करता है और आइटम का चयन करता है)। फिर आप एक कदम आगे जाकर और अधिक सुविधाजनक बना सकते हैं, और :emenuहर बार टाइप किए बिना मेनू को पॉप करने के लिए एक मैपिंग को बांध सकते हैं:

<Tab>कमांड लाइन पर अंतःक्रियात्मक रूप से दबाने जैसे एक मैपिंग अधिनियम में Ctrl-Z बनाएं :

:set wildcharm=<C-Z>

और एक बंधन बनाएं जो स्वचालित रूप से :emenuआपके लिए पूरा होने का आह्वान करता है :

:map <F4> :emenu <C-Z>

2
प्रतिभाशाली! मुझे बताएं कि मैं आपको बीयर कैसे खरीद सकता हूं!
इकोनॉस्टल डेका

2

मुझे स्वयं यह समस्या है कि मैं प्लगइन्स के लिए सभी कमांड और कुंजी संयोजनों को याद नहीं कर पा रहा हूं जो मैं उपयोग कर रहा हूं। इसके अलावा, मैं नई कुंजी मैपिंग सेट करने के लिए या उन्हें एक्सेस करने के लिए कमांड का आविष्कार किए बिना आदेशों को जल्दी से निष्पादित करने के लिए सरल तरीके करना चाहता था।

विम-वेणु

मैंने एक छोटा विम मेनू प्लगइन लिखा है जो आपको प्रत्येक फ़ाइल के मेनू को परिभाषित करने की अनुमति देता है जिसे आप विम के साथ संपादित कर सकते हैं। इस तरह, आप विभिन्न फ़ाइल के लिए मेनू विकल्प 'कंपाइल' को परिभाषित कर सकते हैं और कोड को संकलित करने के लिए सही निर्देश आरंभ कर सकते हैं कि आप किस फ़ाइल (.py, .c, .c ++, ...) का संपादन कर रहे हैं। या मार्कडाउन फ़ाइल में 'टेबल' प्लगइन कमांड के लिए एक सबमेनू बनाएं।

इसे यहां देखें: https://github.com/Timoses/vim-venu

एक साइड नोट के रूप में: मुझे लगता है कि हर किसी को अपना पसंदीदा टेक्स्ट एडिटर चुनना चाहिए। विम में थोड़ी बाधा है (जो सीखने लायक है!)। यदि कोई व्यक्ति सीखने को तैयार नहीं है, तो विम उस व्यक्ति के लिए बहुत काम का नहीं होगा।

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