Zsh टैब आंशिक पथों के लिए वांछित के रूप में काम नहीं कर रहा है


17

मैं फ़ाइलों और निर्देशिकाओं के लिए केस-असंवेदनशील फजी पूरा करना चाहता हूं zsh। कुछ घंटों के लिए मैनुअल पढ़ने के बाद, यह वही है जो मैं लेकर आया था:

zstyle ':completion:*:*:*:*:globbed-files' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:local-directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'

इसके अतिरिक्त, मैं TABएक बार संभावित पूर्णताओं को प्रदर्शित करने के लिए प्रेस करना चाहता हूं , केवल यह सुनिश्चित करने के लिए कि जो मैंने टाइप किया है, उसे संशोधित कर रहा है। फिर TABदूसरी बार दबाने पर मुझे "मेनू पूर्णता" मोड में डाल देना चाहिए। नियमावली के आधार पर, मैं इसके साथ आया:

zstyle ':completion:*' menu select

अब सब कुछ उसी तरह काम करता है, जैसे एक परिस्थिति में होना चाहिए। मेरे पास दो फ़ोल्डर हैं Desktopऔर .rstudio-desktopमेरे होम डायरेक्टरी में हैं। चूंकि मेरे पास है setopt globdots, इसलिए मुझे निम्नलिखित टाइप करने की उम्मीद है:

$ cd ~/dktop<TAB>

मेरे आदेश को दर्ज करने के लिए छोड़ दें, और पूर्ण उम्मीदवारों के रूप में प्रदर्शित करें Desktopऔर .rstudio-desktop। इसके बजाय, यह हटा देता है dktop , मुझे निम्नलिखित के साथ छोड़कर:

$ cd ~/

मैंने सभी प्रासंगिक मैनुअल, गाइड, स्टैक एक्सचेंज प्रश्न और अन्य विभिन्न स्रोतों पर ध्यान दिया है। लेकिन जो कुछ भी मैं करता हूं, मैं यह काम नहीं कर सकता।

दिलचस्प है, हालांकि, अगर मैं होम डायरेक्टरी में हूं और निम्नलिखित टाइप करें तो सब कुछ उम्मीद के मुताबिक काम करता है:

$ cd dktop<TAB>

यही है, यह केवल पथों के गैर-प्रमुख क्षेत्रों के साथ एक समस्या है (और आप देख सकते हैं C-x hकि यह directoriesटैग के बजाय टैग से मेल खाता हैlocal-directories )।

आसान प्रतिलिपि प्रस्तुत करने के लिए, यहां एक ~/.zshrcस्थिति है जो ऊपर वर्णित स्थिति और व्यवहार को पुन: पेश करेगी (होमब्रेव से ताजा एल कैपिटान वर्चुअल मशीन पर परीक्षण किया गया है zsh)।


पुन: पेश नहीं कर सकता। zsh 5.3.1पर है Arch Linuxcd ~/dktop<tab>पैदावार cd ~/Desktop
21

@PythonNut zsh 5.3.1OS X पर समस्या पुन: उत्पन्न होती है। यह दिलचस्प है कि ऑपरेटिंग सिस्टम के बीच अंतर है।
रेडॉन रोसबोरो

1
@PythonNut वास्तव में, मैं शर्त लगाता हूं कि लिनक्स केस-संवेदी है और macOS केस-असंवेदनशील है।
रैडॉन रोज़बोरो

बस एक अनुकूल अनुस्मारक के रूप में सभी macs / macOS केस-असंवेदनशील नहीं हैं, यह निर्भर करता है कि आपकी डिस्क को तैयार करने के लिए केस-असंवेदनशील है या नहीं।
konqui

जवाबों:


1

एक संभव उपाय करना है:

bindkey "^I" expand-word

यह टैब को ~/पूर्ण पथ पर विस्तारित करने का कारण बनेगा ।


हो सकता है कि मुझे कुछ याद आ रहा हो, लेकिन मैं यह नहीं देखता कि यह किसी भी तरह से फजी टैब को पूरा करने से संबंधित है, या ऊपर उल्लिखित समस्या को हल करने के लिए। यदि मैं आपके सुझाव के अनुसार करता हूं, तो TAB दबाने से मुझे मिलेगा cd /Users/raxod502/dktop, और पूरा होने में अक्षम है।
रेडॉन रोसबोरो

@RadonRosborough उम्मीद थी कि ~/इसके पूर्ण मार्ग के विस्तार से फजी पूर्णता से काम शुरू हो जाएगा। यह उन मामलों में से एक की तरह लग रहा था जहां समस्या यह है कि यह एक बार इसका मूल्यांकन करता है, लेकिन आपको वास्तव में काम करने के लिए दो बार मूल्यांकन करने की आवश्यकता होती है, इसलिए इसके बजाय पूर्ण पथ होने का ~/मतलब यह होगा कि यह केवल एक मूल्यांकन की आवश्यकता है। लेकिन बकवास, मुझे क्षमा करें, मैं भूल गया कि बिंदकी पुराने बाइंडिंग को बदल देती है, और मुझे ऐसा कुछ भी नहीं मिल रहा है जो कहता है कि क्या यह संभव है कि दो कार्यों को एक कुंजी से बाँध दें। मेरे बिन्दी के बिना, क्या आपके पूर्ण कार्य तब पूर्ण होते हैं जब निरपेक्ष मार्ग दिए जाते हैं?
ConstipatedNinja

नहीं, इससे कोई फर्क नहीं पड़ता कि इनपुट पथ है ~/dktopया नहीं /Users/raxod502/dktop; dktopजब मैं TAB दबाता हूं तो परिणाम वही होता है, जिसे हटा दिया जाता है।
रेडॉन रोसबोरो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.