2011-08-24 9 views
52

मेरा मतलब है कि इस साल के लिए समाधान ढूंढें।मैं बैश टैब पूर्णता मिलान मिलान मैचों के माध्यम से विम टैब पूर्णता और चक्र की तरह व्यवहार कैसे कर सकता हूं?

मैं इस कारण से बैश की तुलना में फ़ाइलों में हेरफेर करते समय विम में बहुत अधिक उत्पादक हूं।

अगर मैं

file_12390983421 
file_12391983421 
file_12340983421 
file_12390986421 

बैश में है और टाइप file_1-> टैब, यह स्पष्ट रूप से सूचीबद्ध करता है:

file_12390983421 file_12391983421 file_12340983421 file_12390986421 

और यह एक भयानक सूअर और साथ काम करने के दर्दनाक होता है।

विम में एक ही अनुक्रम एक समय में फ़ाइलों के माध्यम से लूप होगा।

कृपया कोई मुझे बताएं कि इसे कैसे करें, या यदि कोई दूसरा खोल है जो यह कर सकता है, तो मैं कल स्विच करूंगा।

+0

http://unix.stackexchange.com/questions/24419/terminal-autocomplete-cycle-through- सुझाव –

+0

'bashrc' में 'बाध्य टैब: मेनू-पूर्ण' रखें। – Claudio

उत्तर

66

डिफ़ॉल्ट रूप से TABcomplete रीडलाइन कमांड से जुड़ा हुआ है। आपका वांछित व्यवहार menu-complete इसके बजाय होगा। आप ~/.inputrc संपादित करके अपनी रीडलाइन सेटिंग्स बदल सकते हैं। TAB rebind करने के लिए, इस पंक्ति जोड़ें:

TAB: menu-complete 

अधिक जानकारी के लिए man bash में READLINE खंड देखें।

+1

यह पूरी तरह से काम करता है। एक बात, क्या इसे पीछे जाने के लिए कोई रास्ता है? विम में मैं शिफ्ट + टैब का उपयोग करता हूं, और यदि मैं गलती से दूर जाता हूं, तो मैं वापस जाता हूं, या अगर मैं सूची के अंत में शुरू करना चाहता हूं। मैं पूरे दिन विम में कुछ करता हूं ... लेकिन मेनू-पूर्ण के साथ काम नहीं कर रहा है। – pixelearth

+6

मेनू-पूर्ण ऑटो आपको इनपुट को प्रतिस्थापित करेगा, लेकिन उम्मीदवार सूची प्रदर्शित नहीं करेगा। क्या दोनों करने का कोई तरीका है? – leon

+12

@ पिक्सलेर्थ: 'मेनू-पूर्ण-पिछड़ा' भी है, और कम से कम मेरे टर्मिनल पर Shift-Tab '\ e [Z' escape अनुक्रम भेजता है। यह आपको यह .inputrc प्रविष्टि देता है: '" \ e [Z ": मेनू-पूर्ण-पिछड़ा ' – sth

3

धन्यवाद मैंने पाया क्या मेरे लिए सबसे अच्छा काम करता है @sth रहे हैं:

सामान्य बैश टैब पूरा होने के रखने के लिए, और उसके बाद के माध्यम से चक्र करने के लिए उपयोग सीटीएल-च का उपयोग करते समय मेनू: पूर्ण

में रखते आवश्यकता के अनुरूप अपने .inputrc फ़ाइल:

"\C-f": menu-complete 
13

# cycle forward 
Control-k: menu-complete 
# cycle backward 
Control-j: menu-complete-backward 

के शीर्ष आप भी विचार कर सकते हैं पर

# display one column with matches 
set completion-display-width 1 

इस तरह आप वर्तमान टैब कार्यक्षमता को संरक्षित करेंगे और बैश को एक कॉलम में संभावनाएं प्रदर्शित करेंगे। तो

file_12340983421 file_12390983421 file_12390986421 file_12391983421 

के बजाय आप मिलेगा

file_12340983421 
file_12390983421 
file_12390986421 
file_12391983421 

पी.एस. आप इस The GNU Readline Library वेबसाइट से readline लाइब्रेरी तक अद्यतित हो सकते हैं।

0

मेरे अनुभव में, एसएचएच के उत्तर में दिए गए समाधान ने मेरे लिए पूरी तरह से काम नहीं किया है। टीएल; डीआर: set -o vi अपने ~/.bashrc पर जोड़ें।

जब मेनू: पूर्ण vi कीबाइंडिंग साथ संयोजन के रूप में उपयोग करते हुए, मुझे यकीन है कि

set -o vi 

मेरी ~/.bashrc में कहीं दिखाई देता है बनाने के लिए किया है। यह कभी नहीं पर्याप्त किया गया मुझे अभी-अभी अपना ~/.inputrc में

TAB: menu-complete 

set editing-mode vi 
set keymap vi 

के लिए के लिए है।

मेरा अनुमान है कि किसी भी तरह set editing-mode और set keymapTAB: ... सेटिंग को क्लोबबर कर रहे हैं, लेकिन मैंने यह पता लगाने के लिए दस्तावेज़ीकरण में पूरी तरह से ध्यान नहीं दिया है कि यह क्यों है।

+0

मुझे टीएबी कमांड नहीं मिला है। मैंने संपादन मोड और कीमैप को vi पर सेट करने का प्रयास किया लेकिन अभी भी कुछ नहीं, मैकोज़ –

+1

@MladenPetrovic पर मेरे इनपुटआरसी में कोई बैश कमांड नहीं मिला - पहला 'सेट ...' भाग '~/.bashrc' में जाता है, दूसरा' टैब: ... 'भाग '~/.inputrc' में जाता है। यदि आप उस भाग को '~/.bashrc' में डालते हैं तो आपको 'TAB कमांड नहीं मिला' मिलेगा। –

0

बैश> = 4 के लिए आप इन सेटिंग्स को पसंद कर सकते हैं:

# If there are multiple matches for completion, Tab should cycle through them 

bind 'TAB':menu-complete 

# Display a list of the matching files 

bind "set show-all-if-ambiguous on" 

# Perform partial completion on the first Tab press, 
# only start cycling full results on the second Tab press 

bind "set menu-complete-display-prefix on" 

यह सेटअप करने के लिए विम के set wildmode=longest:full:list,full

मैं यूनिक्स & लिनक्स साइट पर this question से इन सेटिंग्स को खींच लिया समान है।

संबंधित मुद्दे