रिवर्स-आई-सर्च कमांड (ctrl + r) के साथ खोज-इतिहास को कैसे अग्रेषित करें?


12

रीडलाइन मैनुअल में

# man readline

निम्नलिखित वर्णन करता है कि पिछड़े और आगे की खोज कैसे करें।

reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through the history as necessary.  This is an incremental search.

forward-search-history (C-s)
Search forward starting at the current line and moving `down' through the  history  as  necessary.   This  is  an  incremental search.

जब मैं ctrl + r को हिट करता हूं और "apt-get" टाइप करता हूं, तो मैं ctrl + r को लगातार टैप करके रिवर्स-सर्च-हिस्ट्री कर सकता हूं। लेकिन फिर मैं ctrl + s टैप करता हूं और टर्मिनल आगे की तरफ नहीं जाता है। क्या मैं कुछ गलत कर रहा हूँ?

मेटा "उपसर्ग" M- "किस कुंजी का प्रतिनिधित्व करता है?

जवाबों:


15

अनुक्रम C-sटर्मिनल चालक से लिया गया है, जैसा कि आप देख सकते हैं

stty -a | grep '\^S'

रीडलाइन द्वारा उपयोग के लिए अनुक्रम को मुक्त करने के लिए, स्टॉप टर्मिनल अनुक्रम को कुछ अन्य अनुक्रम में सेट करें, उदाहरण के लिए

stty stop ^J

या इसे पूरी तरह से हटा दें

stty stop undef

उसके बाद C-sदिए गए टर्मिनल में काम करेगा।

इसे ~/.bashrcहर टर्मिनल में काम करने के लिए सेट करें ।

M-अनुक्रम का मतलब है Altकुंजी, के रूप में पहले ही उल्लेख किया।


^ जे एक अच्छा विकल्प है, क्योंकि stopइसका इस्तेमाल किसी और चीज के लिए नहीं किया जाता है
हॉब्स

3

जैसा कि ऊपर बताया गया है, एक अलग TTY 'स्टॉप' चार को असाइन करने के अलावा, आप इसे पूरी तरह से हटा सकते हैं यदि आप इसका उपयोग करने की योजना नहीं बनाते हैं (मैं ऐसा नहीं करता हूं), इस तरह:

$ stty stop undef

फिर आगे की खोज के लिए रीडलाइन नियंत्रण-एस का उपयोग कर सकती है और एक नया स्टॉप चार जोड़े जाने के कारण आपको कोई अजीब व्यवहार नहीं मिलेगा।


यह एक बेहतर तरीका है।
एनिस्केव्स्की

1

फॉरवर्ड-सर्च-हिस्ट्री (Cs) काम नहीं करता (हालांकि यह मैन पेज में है)।

'M-' Alt कुंजी संशोधक का प्रतिनिधित्व करता है।


1
C-sभाग सही नहीं , मेरा उत्तर देखिए।
enzotib

0

कृपया उपयोग न करें:

stty stop ^J

परंतु

stty stop ^P

या कुछ और, जैसा ^Jकि ssh के साथ बड़ी समस्या है। (मुझे नहीं पता कि वैसे भी क्यों।) जब मैंने लॉग इन किया Enterऔर बैकस्लैश काम नहीं कर रहा था। या मुझे टाइप करना था:

stty sane 
export TERM=linux

इससे पहले कि मैं टाइप करना चाहता था

ssh root@192...

इसलिए

stty stop ^P

एक ही समय में दोनों समस्याओं का हल।



0

रिवर्स सर्च (Ctrl-R कमांड के साथ) का उपयोग करते हुए आगे बढ़ने के लिए:

  1. अपनी .bashrc फ़ाइल को खोलें:
    sudo gedit ~/.bashrc

  2. इस पंक्ति को जोड़ें (पत्र "एफ" को सिस्टम द्वारा अभी तक उपयोग नहीं किए गए अन्य के साथ बदला जा सकता है)

    bind '"\C-f": forward-search-history' 
    
  3. अपनी फ़ाइल बंद करें और अपने .bashrc (या किसी अन्य टर्मिनल को खोलें) को कमांड के साथ अपडेट करें:
    source ~/.bashrcया. ~/.bashrc

अब आप SHORTCUT के साथ इतिहास में आगे बढ़ सकते हैं: Ctrl + f

उबंटू 18.04 एलटीएस पर काम करना


0

ध्यान दें कि मैंने इस्तेमाल किया था

stty stop ^J
stty -ixoff

आगे खोज को सक्षम करने के लिए .bashrc और कष्टप्रद "आउटपुट को Ctrl + S दबाकर निलंबित कर दिया गया है। कोनसोल में संदेश को फिर से शुरू करने के लिए Ctrl + Q दबाएं" जब ctrl + s दबाया गया था, लेकिन दोनों आदेशों ने व्यक्तिगत रूप से डॉल्फ़िन ( इस तरह से "F4" शॉर्टकट कि मुझे इसे काम करने के लिए दो बार ctrl + c करना पड़ा, और स्वचालित रूप से "cd" कमांड जहां ग्राफ़िकल रूप से नेविगेट करने पर इंजेक्शन नहीं लगाया जा रहा था।

इसलिए मैं अब पसंद करता हूं:

stty stop undef
stty -ixon

इसका एक ही प्रभाव है, एक सब अपेक्षा के अनुरूप काम करता है;)

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