2011-01-12 28 views
5

यदि मैं irb में एक रिवर्स इंटरैक्टिव खोज करता हूं और फिर नियंत्रण कक्ष दर्ज करता हूं (तीर कुंजी केवल वही हैं जिन्हें मैंने वास्तव में देखा है)। अब तक तो अच्छाirb क्यों मेरे रिवर्स-इंटरैक्टिव-सर्च बफर में नियंत्रण वर्ण डालें?

$ irb 
>> print "hello" 
hello 

तो ^r दर्ज करें, h

$ irb 
>> print "hello" 
hello 
(reverse-i-search)`he': print "hello" 

: तो मैं इस सत्र के साथ शुरू करते हैं। तब मैं बाएँ तीर मारा, और मैं इस के साथ अंत:

$ irb 
>> print "hello" 
hello 
>> print "[Dhello" 

तीर के बाद के उपयोग सामान्य रूप से चारों ओर कर्सर ले जाता है।

+2

मैं तुम्हें टैग 'readline' जोड़ने सुझाव देते हैं। –

उत्तर

3

यह आपकी समस्या का समाधान नहीं होगा, लेकिन कम से कम मैं सवाल के लिए कहा (क्यों) जवाब कर सकते हैं:

बाएँ तीर तीन अक्षर, ESC, [, और डी के रूप में टर्मिनल में प्रवेश हो जाता है (आप read टाइपिंग और बायां तीर, जो ^[[D प्रदर्शित करता है, जहां ^[ कैसे भागने चरित्र गाया जाता है दबाकर इस परीक्षण कर सकते हैं।)

किसी तरह irb ESC चरित्र जब ऐसा नहीं होना चाहिए ऊपर उठाता है; इसलिए ईएससी इतिहास की खोज समाप्त करता है, और [D सचमुच प्रवेश किया जाता है। रीडलाइन, बैश और पायथन का उपयोग करके अन्य कार्यक्रमों को देखकर सही तरीके से व्यवहार किया जाता है, लेकिन ledit (हाँ, अस्पष्ट - क्षमा करें ^^) में भी यह समस्या है।

जब तक किसी को इस के लिए एक समाधान जानता है, केवल वैकल्पिक हल मैं के बारे में सोच सकते हैं ESC बजाय एक तीर कुंजी के इतिहास खोज से बाहर निकलें करने के लिए दबाव है। या अगर आपको आगे संपादित करने की आवश्यकता नहीं है तो प्रवेश करें।

+1

मुझे नहीं पता था कि ईएससी मारने से इतिहास वस्तु का चयन होगा और मेरे कर्सर को भी जगह में छोड़ दिया जाएगा, ताकि स्वयं ही बहुत उपयोगी हो। (मैं नियंत्रण कर रहा था-ए या नियंत्रण-ई) –

1

आप vi संपादन मोड सक्षम है?

~ $ irb 
1.9.3p392 :001 > Readline.vi_editing_mode? 
    => true 

मैं इसे set editing-mode vi के माध्यम से मेरी $HOME/.inputrc फ़ाइल में चालू किया था। इसे मेरे तीर कुंजियों को "निश्चित" अक्षम करना।

@JoLiss, अन्य ReadLine प्रोग्राम (bash, आदि) ने उल्लेख भी सही ढंग से काम कर रहे थे के रूप में; तो AFAICT, यह एक रूबी समस्या है। देखें: http://bugs.ruby-lang.org/issues/7859#change-36333