जब कई फाइलें / निर्देशिका हैं तो टर्मिनल को स्वतः पूर्ण कैसे करें?


32

अगर मेरे पास कई निर्देशिकाएं हैं, जैसे:

afoo abar

जब मैं टैब दबाता हूं, तो कभी-कभी मेरा टर्मिनल स्वतः पूर्ण होने से इंकार कर देगा (उदाहरण के लिए "cd" तब टैब), और इसके बजाय निर्देशिकाओं की सूची प्रिंट करें। कभी-कभी यह एक शोर, कष्टप्रद ध्वनि भी फेंकता है। किसी भी विचार कैसे इसे इस तरह से मामलों में स्वत: पूर्ण बनाने के लिए? उदाहरण के लिए, यह पहले abar दिखा सकता है, और फिर तब हटा सकता है जब मैं फिर से टैब दबाऊंगा। मैंने देखा कि यह उबंटू में खिड़कियों, या कुछ प्रशंसा में मामला है

जवाबों:


46

कुछ ऐसा है जो मेरे लिए एक जीवन रक्षक है, एक गूंगा सूची दिखाने के बजाय संभावनाओं के माध्यम से साइकिल चलाना है।

जैसा कि बैश readlineअपने ऑटो-पूरा करने के लिए उपयोग कर रहा है, निम्न पंक्तियों को इसमें जोड़ें~/.inputrc

एक बार जब आप संतुष्ट हो जाएं और अच्छी तरह से कुछ ही दिनों / सप्ताह, के लिए समाधान नीचे का परीक्षण किया है , कट और पेस्ट (कॉपी कर सकता हूँ नहीं!) ही सेटिंग से ~/.inputrcकरने के लिए /etc/inputrcजो सिस्टम-वाइड सेटिंग होती हैं, आपके सिस्टम पर सभी उपयोगकर्ताओं के लिए इसे उपलब्ध कराने (अतिथि सहित)।

कोड:

# mappings to have up and down arrow searching through history:
"\e[A": history-search-backward
"\e[B": history-search-forward
# mappings to have left and right arrow go left and right: 
"\e[C": forward-char
"\e[D": backward-char

# mapping to have [Tab] and [Shift]+[Tab] to cycle through all the possible completions:
"\t": menu-complete
"\e[Z": menu-complete-backward

फिर exitआपका टर्मिनल (या पोटीन की तरह रिमोट टर्मिनल) और इसे फिर से खोलें ...

उदाहरण:

  1. जब आप 3 फ़ाइलें: file1, file2और file3और आप टाइप करें:

    e fTabTabTab

    यह चक्र होगा:

    e file1
    e file2
    e file3

    और जब आप पीछे की ओर साइकिल चलाना चाहते हैं, तो बस हिट Shift+ करेंTab

  2. जब आप टाइप करें:

    very-complicated-command with lots of command line parameters

    और अगली बार जब आपको एक ही कमांड की आवश्यकता हो, तो आप केवल टाइप करें:

    very

    और यह आपके लिए टाइप करेगा:

    very-complicated-command with lots of command line parameters

यह आपको एक टन समय बचा सकता है! ;-)


2
+1, दिलचस्प, लेकिन: 1. ~/.inputrcअधिक बेहतर हो सकता है /etc/inputrc, और 2. मुझे लगता है कि आप इसे bashसीधे सेट कर सकते हैं: unix.stackexchange.com/q/55203/70524 , unix.stackexchange.com/a/16926-70524
muru

यह काफी अच्छा है, धन्यवाद (और मेरा उत्थान है)। क्या उन विकल्पों को दिखाने का एक सार्वभौमिक तरीका है जिसके माध्यम से लूप होगा, जो दोनों दुनिया के सर्वश्रेष्ठ को जोड़ती है? मुझे फ़ोल्डरों और सबकॉमैंड्स आदि के साथ टैब + टैब की संभावना पसंद है , इसलिए मुझे उन सभी को याद रखने की ज़रूरत नहीं है (उदाहरण के लिए git branch <tab through branches>, हालांकि, अगर मैं इसकी वस्तुओं के माध्यम से एक सूची और टैब देख सकता था, तो यह बहुत अच्छा होगा! निर्देशिकाओं और फ़ाइलों के लिए! lsक्या आइटम उपलब्ध हैं देखने के लिए एक विकल्प है लेकिन, subcommands के लिए यह नहीं है कि आसान या स्पष्ट है, है दुर्भाग्य
एरिक

यह भी PuTTy पर काम करता है! बस इसे एक बार पुनः आरंभ करना था :)
np8

@ एरिक: जाहिर है, आपने जो मांगा है वह संभव है, लेकिन यहां चीजों को सरल रखने के लिए मेरे जवाब को संपादित करने के लिए नहीं। (पुरानी टिप्पणी को हटा दिया गया है कि यह संभव नहीं है)
Fabby

18

1 के बाद tabआपको अधिक पत्र सम्मिलित करने की आवश्यकता है। तो अगर आप टाइप करते हैं

cd a

और हिट करें tabआपको कुछ नहीं मिलता है और एक सेकंड के बाद tab(तुरंत बाद) आपको शुरू होने वाले नामों की एक सूची मिलती है aऔर फिर fइसे शेष पूरा करने के लिए ऑटो को सम्मिलित करने की आवश्यकता होती है

cd atabtabftabtab

में परिणाम होगा

cd afoo

2
IMHO: यह सही तरीका है। मुझे व्यक्तिगत रूप से खिड़कियों का व्यवहार बहुत कष्टप्रद लगता है। उस मामले पर विचार करें, जहां आपके पास बहुत सारी फाइलें हैं, जिनकी aआपको शुरुआत करनी है और आपको आखिरी जरूरत है। जब आप गलती से टैब दबाते aहैं, तो आपको सही करने के लिए सभी संभावित पूर्णताओं की सूची के माध्यम से चक्र करना पड़ता है।
टोबियास

@ टोबियास: जब आप गलती से [टैब] को दूसरी प्रणाली का उपयोग करके बहुत जल्दी हिट करते हैं , तब भी [Ctrl] [K] ...; ;-)
Fabby
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.