आंशिक रास्तों के Zsh- जैसे टैब का पूरा होना


11

विम में फ़ाइलनाम के लिए बैश-जैसे आंशिक टैब-पूर्ण से संबंधित

वास्तव में शानदार विशेषताओं में से zshएक यह है कि आप टाइप कर सकते हैं, उदाहरण के लिए ls /u/s/m/m/who.1, दबाएं Tabऔर इसे पूरा करें ls /usr/share/man/man1/who.1.gz। एक बार जब आप इसकी अभ्यस्त हो जाते हैं, तो वास्तव में वापस जाने के लिए यह कष्टप्रद होता है /u<tab>/s<tab>/m<tab>/m<tab>..., खासकर तब जब पूरा आंशिक पथ केवल एक वास्तविक पथ को हल कर सकता है, लेकिन प्रत्येक व्यक्तिगत घटक में कई पूर्णताएं हो सकती हैं। क्या यह विम में प्राप्त किया जा सकता है, उदाहरण के लिए, उपयोग करते समय :eया :cd?

ऐसे का उपयोग कर के रूप में zsh में अन्य उपयोगी पथ-संबंधी सुविधाओं, कर रहे हैं cd foo barके साथ एक बराबर पथ पर ले जाने के fooसाथ बदल दिया bar(यानी, /blah/foo/baz/yadaहो जाता है /blah/bar/baz/yada)। यदि कोई समाधान है जो इनको भी लाता है (अनिवार्य रूप से शेल से संबंधित कार्यों को एक शेल को सौंपना जो कि बहुत अच्छी तरह से करता है), यह बहुत अच्छा होगा।


1
मुझे कुछ भी पता नहीं है कि आप जो पूछ रहे हैं, वह ठीक हो जाता है, लेकिन विभिन्न फ़ज़ी-फाइल फ़ाइंडर हैं जो आपको एक समान तरीके से फाइलें खोलने की अनुमति देते हैं। मैं CtrlP का पक्ष लेता हूं, लेकिन कमांड-टी भी है और मुझे यकीन है कि अन्य लोग भी हैं जिनका मैं नाम भूल रहा हूं।
रिच

1
@ जब तक मैं एक दर्जन बार टैब मैश करने के लिए नहीं है, मुझे खुशी होगी।
मूरू

एसओ पर पहले से ही एक समान प्रश्न है।
romainl

जवाबों:


6

मैंने Ctrl और अन्य संबंधित प्लगइन्स का उपयोग बहुत पहले किया था जब तक कि मैंने वास्तव में विम की मूल शक्तियों की खोज नहीं की थी। मुझे बाहरी प्लगइन की आवश्यकता के बिना ऐसा करने के कुछ तरीके बताएं:

  1. :eके बारे में अच्छी बात: ई है आप कुछ ऐसा कर सकते हैं :e /u*/s*/m*/m*/<Tab>और विम आपके लिए स्वचालित रूप से विस्तार करेगा :e /usr/share/man/man। यह आपके द्वारा पोस्ट किए जाने की तुलना में बहुत छोटा और सरल है, लेकिन एक बेहतर तरीका यह है :e /usr/**/man<Tab>कि इस तरह से यह /usrसभी मिलान वाले रास्तों के तहत पुनरावर्ती रूप से दिखेगा और यह निर्धारित करने में समय ले सकता है कि सेट कितना बड़ा है, लेकिन इस पर निर्भर करता है प्रोजेक्ट यह काम करता है चमत्कार क्योंकि आप कुछ ऐसा कर सकते हैं :e ap**/jav**/user<Tab>और यह सभी अधूरे रास्तों को पूरा करेगा और आपको मिलान वाले रास्तों की सूची देगा और सुपर महान काम करेगा।
  2. :b, मौजूदा बफ़र्स खोलने के लिए। यह वास्तव में शक्तिशाली है क्योंकि यह डिफ़ॉल्ट रूप से भाग को स्वीकार करता है इसलिए आप बस कुछ ऐसा कर सकते हैं :b usr*man<Tab>और यह फ़ाइल नाम को पूरा करेगा यदि यह पहले से ही बफर सूची में लोड किया गया है। यह विशेष रूप से अच्छा है क्योंकि यह तत्काल और वास्तव में तेजी के पास है। इसके अलावा, मैं tpope / vim-obsession और dhruvasagar / vim-prosession की मदद से जोरदार सेशन का उपयोग करता हूं , जो कि सभी फाइलों को मैं बफर लिस्ट में रखता हूं और वे मौजूद हैं, भले ही मैं विम के पास हो और वहां से वापस आ जाऊं परियोजना निर्देशिका।

1
/u*/s*/m*/m*/<Tab>यह है कि मैं बैश के आसपास कैसे काम करता था। यह एक मील द्वारा zsh के लिए एक विकल्प नहीं है। /usr/**/man<Tab>जब आप पूरे फाइलसिस्टम को खोलते हैं तो भयावह रूप से धीमा होता है, लेकिन छोटी परियोजनाओं के लिए उपयोगी हो सकता है। जब तक मुझे गलतफहमी न हो :b, यह नई फाइलें खोलने के लिए नहीं है।
मूरू

@ एम आर यू सही है, यह ज़ीश का विकल्प नहीं है, लेकिन यह अभी भी पूरी तरह से खुद को टाइप करने से बेहतर है, इसे आसान बनाने के बारे **में है, वास्तव में धीमी गति से है, लेकिन नियमित परियोजनाओं के लिए अच्छा काम करता है। :bमौजूदा खुले बफर के लिए है, इसीलिए सत्र का उपयोग करने में मदद मिलती है।
ध्रुव सागर

5

vim-zsh-path-पूर्ण करने के लिए जो आप (पहला भाग, कम से कम) पूछ रहे हैं, उसे पूरा करने के लिए, लेकिन मैंने कभी ऐसा नहीं किया। (मैं भी इसके बारे में तब तक नहीं सुना था, जब तक कि रोमेन अपने लेखक द्वारा एसओ उत्तर से जुड़ा नहीं था , हालांकि इसके प्रलेखन में कई सीमाओं का भी उल्लेख है।

इसके अतिरिक्त, कई फजी-फाइल फाइंडर्स हैं जो फाइलों को खोलने के लिए कुछ समान हासिल करते हैं।

इसके लिए मेरा पसंदीदा प्लगइन CtrlP है । जब फ़ाइलों को खोलने के लिए उपयोग किया जाता है, तो यह उन फ़ाइलों की खोज करता है जिनके पूर्ण पथ में वे अक्षर होते हैं जिन्हें आप सही क्रम में टाइप करते हैं - आपको पथ के प्रत्येक घटक (और सभी पथ विभाजक) के भागों में टाइप करने की ज़रूरत नहीं है अपने उदाहरण में है, लेकिन यह पूरी तरह से अच्छी तरह से काम करता है यदि आप करते हैं। यह हाल ही में उपयोग की गई फ़ाइलों को खोलने के लिए एक ही इंटरफ़ेस का उपयोग करता है और वर्तमान में खुले बफ़र्स, और इसके अलावा।

डिफ़ॉल्ट रूप से, यह <c-p>CtrlP प्रॉम्प्ट को खोलने के लिए सामान्य मोड में मैप करता है। प्रॉम्प्ट फ़ाइलों की एक सूची प्रदर्शित करता है, जो वर्णों में लिखते समय संकुचित होती है। आप भी दबा सकते हैं Enterकिसी भी बिंदु पर वर्तमान में चयनित फ़ाइल, या उपयोग को खोलने के लिए <c-k>और <c-j>ऊपर और नीचे वर्तमान में मिलान किया गया फ़ाइलों की सूची के माध्यम से चयन ले जाने के लिए।

एक अन्य लोकप्रिय विकल्प कमांड-टी है , लेकिन मैं CtrlP का पक्ष लेता हूं क्योंकि यह VimScript में लागू है; कमांड-टी में एक रूबी घटक है।

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