बैश के रिवर्स सर्च में कैसे नेविगेट करें?


40

बैश Ctrl+ के माध्यम से खोज रिवर्स करने के लिए कार्यक्षमता प्रदान करता है R। फिर एक कमांड के एक हिस्से में टाइप कर सकते हैं यह इतिहास से एक फिटिंग प्रविष्टि दिखाएगा।

मान लें कि यह मेरा इतिहास है:

vim foo1
vim foo2 # I want to go here
vim foo3 # this is where I land, how to go back?

मैं खोजता हूं foo। साधते Ctrl+ Rफिर से अगले फिटिंग खोज प्रविष्टि को दर्शाता है। अक्सर मेरे साथ ऐसा होता है, कि मैं बहुत तेज हूं और अपने इच्छित परिणाम को नेविगेट करता हूं और vim foo3दिखाया जाता है और अब मैं वापस जाना चाहता हूं vim foo2

इसलिए मेरा सवाल है: मैं रिवर्स खोज के भीतर कैसे नेविगेट करूं?


आप किस टर्मिनल का उपयोग करते हैं? उदाहरण के लिए। सूक्ति-टर्मिनल,
कोनोसोल

1
खैर मैं इसके साथ बहुत परिचित नहीं हूँ ... कुंजी + एस ctrl होना चाहिए, लेकिन कुछ टर्मिनलों , कुंजी खाने के लिए लग रहे हैं इससे पहले कि यह रिवर्स खोज तक पहुँच जाता है
varesa

Ctrl + Shift + R - ctrl + R
devansvd


जवाबों:


36

आप इसे उस forward-search-historyफ़ंक्शन के माध्यम से एक्सेस कर सकते हैं जो प्रति डिफ़ॉल्ट बाइंड है ctrl+s। दुर्भाग्य ctrl+sसे xoffप्रति डिफ़ॉल्ट संकेत के लिए उपयोग किया जाता है जिसका अर्थ है कि आप इसका उपयोग खोज की दिशा बदलने के लिए नहीं कर सकते हैं। समस्या को हल करने के लिए दो समाधान हैं, एक xoff/xonसिग्नलिंग भेजने में अक्षम और दूसरा केबाइंडिंग के लिए परिवर्तनforward-search-history

Xon / xoff अक्षम करें

stty -ixonअपने टर्मिनल में चलाएं या इसे अपने साथ जोड़ें ~/.bashrc। यह आपको इतिहास फ़ंक्शन ctrl+sका उपयोग करने के लिए उपयोग करने की अनुमति देता forward-search-historyहै।

नियंत्रण प्रवाह के बारे में अधिक जानकारी के लिए एक टर्मिनल में Ctrl-S को गलती से दबाए जाने के बाद कैसे अप्रभावित करें पर एक नज़र है ? और कुछ जवाब

कीबाइंडिंग बदलें

आप के डिफ़ॉल्ट व्यवहार को बदलने के लिए नहीं करना चाहते हैं ctrl+sआप के लिए की बाइंडिंग बदल सकते हैं forward-search-historyके साथ bind। जैसा कि अधिकांश कुंजियों को पहले ही परिभाषित किया जा चुका है कि आपको रचनात्मक होना पड़ सकता है:

bind "\C-t":forward-search-history

यह ctrl+tफॉरवर्ड-सर्च-हिस्ट्री के लिए बाध्य होगा , लेकिन कृपया ध्यान रखें कि डिफ़ॉल्ट रूप से ctrl+tचलता हैtranspose-chars


मैं अपने पहले समाधान की कोशिश की stty -ixonमें zshहै और यह बहुत अच्छी तरह से काम करता है। हालांकि xoff/xonसिग्नलिंग को अक्षम करने में कोई संभावित अवांछित दुष्प्रभाव हैं ?
छात्र

@student आप ctrl+sटर्मिनल आउटपुट को किसी भी समय रोकने के लिए उपयोग नहीं कर सकते । यदि आप इसे पहले कभी इस्तेमाल नहीं किया है तो कोई समस्या नहीं है
उलरिच डेंगल

1
इसके लायक क्या है, मैं दूसरे समाधान के साथ गया। उत्तम सामग्री ! मुझे कभी नहीं पता था कि आप कंसोल को दबाकर फ्रीज कर सकते हैं C-s.. सर्वर लॉग पर पूंछ का उपयोग करते समय बहुत उपयोगी है। नीट! (मेरी इच्छा है कि मेरा एक और उत्थान :))
आशुतोष जिंदल

मुझे OSX पर काम करने का विकल्प # 2 नहीं मिला। मुझे इसके बजाय यह करना था:bind '"\C-t": history-search-forward'
stiemannkj1

0

अपने बैश द्वारा प्रदान की गई मूल रिवर्स सर्च और फॉरवर्ड सर्च के विकल्प के रूप में, आप इस पर गौर करना चाहते हैं:

fzf , एक स्व-वर्णित "कमांड-लाइन फ़ज़ी फ़ाइंडर "।

यह आपके बैश (और अन्य टर्मिनलों) की डिफ़ॉल्ट रिवर्स खोज को बदल सकता है।

इसके लाभ यह हैं कि:

  • इतिहास से अपने आदेशों की एक सूची प्रिंट करता है
    • Ctrl + R को फिर से मारकर कालानुक्रमिक या प्रासंगिकता छँटाई
  • तीर कुंजियों के माध्यम से नेविगेट किया जा सकता है (या Ctrl + J / Ctrl + K)
  • कई सुइयों की खोज करने की अनुमति देता है

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.