2011-11-30 22 views
57

लिनक्स में, और कई अन्य प्रणालियों, जब टर्मिनल नेविगेट आप ऑटो के लिए टैब प्रेस एक निर्देशिका या फ़ाइल नाम को पूरा कर सकते हैं।स्वत: पूर्णता

मैं अगर उस MySQL टर्मिनल में ऐसा कुछ है सोच रहा हूँ। उदाहरण के लिए, यदि मैं someTableWithRidiculousLongName का विवरण प्राप्त करना चाहता हूं तो मैं describe someTableW टाइप कर सकता हूं तो टैब और यह बाकी को स्वतः पूर्ण कर देगा।

MySQL टर्मिनल में मौजूद ऐसा कुछ करता है? अतिरिक्त विकल्प --auto-rehash साथ

+1

Mycli, https://github.com/dbcli/mycli – CodyChan

उत्तर

100

संपादित करें या एक फ़ाइल अपने घर निर्देशिका में .my.cnf बनाएं जिसका नाम युक्त

[mysql] 
auto-rehash 
+8

स्वीकार्य एक – galarant

+0

@galarant की तुलना में यह एक बेहतर उत्तर है, यह बेहतर नहीं है – rkmax

+2

@rkmax - यह अभी भी है '- डिज़ाइन-ऑटो-रिहाश' ध्वज के साथ वैकल्पिक। लेकिन अब आप इसे डिफ़ॉल्ट रूप से चालू कर दिया है। –

54

शुरू MySQL कंसोल, यानी

mysql --auto-rehash -u root -p 
+5

आज़माएं मुझे नहीं पता कि यह मेरे लिए क्यों काम नहीं करता है! टैब को केवल टैब के रूप में व्याख्या किया जा रहा है और ऑटो पूर्ण होने के लिए कुछ भी नहीं करता है। –

+7

@pjp - यह सुविधा [नियमित विंडोज बिल्ड पर काम नहीं करती है] (http://stackoverflow.com/questions/269653/autocomplete-in-mysql-under-windows) –

+0

धन्यवाद! अच्छा स्पष्टीकरण –

65

MySQL शीघ्र प्रकार के भीतर स्वत: पूर्ण सक्षम करने के लिए:

mysql> \# 

इसके बाद आप टाइप कर सकते हैं:

mysql> describe someTableW[TAB] 

पाने के लिए:

mysql> describe someTableWithRidiculousLongName 
+5

यह डिफ़ॉल्ट क्यों नहीं है? –

+1

सादगी से बढ़िया ... – SYNCRo

+0

सरल और सुरुचिपूर्ण – sp1rs

1

तुम भी स्वत: पूर्ण आदेश इतिहास के आधार पर कर सकते हैं। टाइप करना शुरू करें, तो कुंजी जो ed-search-prev-history और ed-search-next-history लिए बाध्य कर रहे आह्वान। यह लागू होता है अगर mysql libedit समर्थन के साथ आता है। डिफ़ॉल्ट कीबाइंडिंग Ctrl-पी और Ctrl-एन हैं, लेकिन इस .editrc में अनुकूलित किया जा सकता। Ctrl-अप और Ctrl-डाउन के लिए मेरे उदाहरण:

# start typing, then press Ctrl-Up 
bind "\e[1;5A" ed-search-prev-history 
# start typing, then press Ctrl-Up, then Ctrl-Down 
bind "\e[1;5B" ed-search-next-history 

इससे पहले, mysql ReadLine के आधार पर किया गया था, और उसके बाद history-search-backward और history-search-forward सही आदेशों हैं। विन्यास तो .inputrc के माध्यम से किया गया था। एक ही उदाहरण के रूप में ऊपर:

# these are the key bindings for the readline library 
# start typing, then press Ctrl-Up 
"\e[1;5A": history-search-backward 
# start typing, then press Ctrl-Up, then Ctrl-Down 
"\e[1;5B": history-search-forward 

तो, कहते हैं कि तुम sel टाइप करना शुरू किया और Ctrl-अप, select * from some_long_table_name आह्वान आने कि अगर एक कमांड मैंने पहले का इस्तेमाल किया है है।

1

ऑटो मिलावत के बारे में कुछ नोट:

जब आप स्वतः पूर्ण संपादन mysql कॉन्फ़िग फ़ाइल सक्षम ..

[mysql] 
auto-rehash 

आप सभी उपयोगकर्ताओं के लिए या केवल एक उपयोगकर्ता के लिए यह कर सकते हैं:

/etc/my.cnf: सभी उपयोगकर्ता

~/.my.cnf: वास्तविक उपयोगकर्ता

0,123,

तुम भी जोड़ने स्वतः पूर्ण निष्क्रिय कर सकते हैं: http://www.sysadmit.com/2016/08/linux-mysql-autocompletar.html

2

ओएस एक्स 10.11 पर:

no-auto-rehash 

से निकाले गए।6 मैंने ऊपर वर्णित अनुसार --auto-rehash सेट किया है, लेकिन यह काम नहीं किया। (यह ओएस एक्स है तो mysql बीएसडी libedit पुस्तकालय के साथ संकलित किया गया है।)

तब मैं याद आया कि मैं, बनाने ~/.editrc द्वारा mysql ग्राहक के लिए vi कुंजी-बाइंडिंग निर्धारित किया था एक पंक्ति युक्त बाँध - v। यह mysql क्लाइंट में मुझे vi- जैसे नेविगेशन देने के लिए बहुत अच्छा काम करता है, लेकिन यह कॉलम नाम पूरा करने को तोड़ दिया (मैं हटाकर इसे सत्यापित करने में सक्षम था .editrc)।

तो मैं एक छोटा सा शोध किया और पाया कि ~/.editrc कम से कम निम्नलिखित लाइनों होना चाहिए:

bind -v 
bind \\t rl_complete 
इस अतिरिक्त लाइन के साथ

, नाम पूरा होने mysql में ठीक से काम करता और छठी की तरह भी काम करता है नेविगेशन । मैं जानता हूँ कि यह एक पुराने सवाल यह है कि (वहाँ अन्य .editrc सेटिंग्स जो बहुत mysql ग्राहक नेविगेशन में सुधार कर रहे हैं, लेकिन इस जगह चर्चा की है कि धागा शुरू करने के लिए नहीं है।)

+0

इसके लिए धन्यवाद! – grocky

6

, लेकिन मैं बहुत उपयोगी MySql CLI पाया है उन्नत स्वत: पूर्णता वाला ग्राहक: mycli। यह अंतर्निहित ऑटो-रिहाश सुविधा से कहीं अधिक स्मार्ट है।

+0

उत्कृष्ट विकल्प! – kraxor

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