मैं menu selectव्यवहार का उपयोग कर रहा हूं zsh, जो कर्सर के नीचे एक मेनू को आमंत्रित करता है जहां आप विभिन्न संभावनाओं को देख सकते हैं। इसके लिए मैंने .zshrc विकल्प सेट किया है
zstyle ':completion:*' menu select=2
डिफ़ॉल्ट रूप से, Returnइस मेनू में एक संभावना का चयन करने के लिए दबाने से केवल शब्द पूरा होता है - यह वास्तव में कमांड नहीं भेजता है। उदाहरण के लिए, मुझे इस तरह का एक मेनू मिल सकता है
~ % cd de<TAB>
completing directory:
[Desktop/] Development/
Returnयहां दबाने पर परिणाम मिलेगा
~ % cd Desktop/
फिर मुझे वास्तव में कमांड भेजने के लिए दूसरी बार प्रेस Returnकरना होगा ।
मैं इसे करने के लिए इस व्यवहार को संशोधित कर सकता हूं ताकि Returnदोनों को पूरा करने का चयन करें और ऐसा करने से कमांड भेजता है
bindkey -M menuselect '^M' .accept-line
हालांकि, इसके साथ एक समस्या है: कभी-कभी मुझे कमांड भेजे बिना एक फ़ाइल या निर्देशिका को पूरा करने की आवश्यकता होती है । उदाहरण के लिए, मुझे यह करने की आवश्यकता हो सकती है ln -s Desktop Desktop2- इस bindkeyव्यवहार के साथ , डेस्कटॉप को पूरा करने की कोशिश के परिणामस्वरूप ln -s Desktop/कमांड के रूप में भेजा जाएगा , और जाहिर है कि मैं ऐसा नहीं चाहता।
मुझे पता है कि सिर्फ प्रेसिंग स्पेस मुझे कमांड के साथ मिलेगा, लेकिन यह अब एक आदत है।
यह देखते हुए, क्या इसे बनाने का कोई तरीका है ताकि केवल कुछ कमांड आपको Returnएक बार दबाए (जैसे cd), लेकिन अन्य सभी कमांड को इसे दो बार दबाने की आवश्यकता है?
.zshrcफ़ाइल आपको ऐसा करने की अनुमति नहीं देती है, तो उत्तर बस नहीं होने वाला है, जब तक कि आप कमांड-आधारित व्यवहार का समर्थन करने के लिए स्रोत कोड को स्वयं समायोजित न करें। लेकिन फिर भी आपको यह परिभाषित करना होगा कि ऐसा करने के लिए कौन सी आज्ञा है, जो अपने आप में एक अतिरिक्त प्रवेश को दबाने की तुलना में अधिक थकाऊ है ...