मैं बैश इतिहास को पूरा करने के लिए कैसे बदल सकता हूं जो पहले से ही लाइन पर है?


133

मुझे कुछ महीने पहले एक कमान मिली जिसने मेरे बैश इतिहास को पूरा कर दिया, जो ऊपर के तीर को दबाते समय लाइन पर पहले से ही मौजूद है:

$ vim fi

दबाएँ

$ vim file.py

मैं इसे अपने नए कंप्यूटर पर सेट करना चाहूंगा, क्योंकि यह एक बड़ा इतिहास रखते हुए बहुत समय बचाता है। समस्या यह है कि मैं अपने जीवन के लिए याद नहीं कर सकता कि यह कहाँ उल्लेख किया गया था और अंतहीन बैश संदर्भ और ट्यूटोरियल के माध्यम से पढ़ना दुर्भाग्य से या तो मदद नहीं करता है।

क्या कोई आज्ञा जानता है?

जवाबों:


223

शायद कुछ पसंद है

# ~ / .inputrc
"ई '[ए": इतिहास-खोज-पिछड़ा
"ए" [बी]: इतिहास-खोज-आगे

या समकक्ष,

# ~ / .bashrc
अगर [[$ - == * मैं *]]
फिर
    बाइंड '' \ _ [ए '': इतिहास-खोज-पिछड़ा ''
    बाइंड "" ई [बी]: इतिहास-खोज-आगे '
फाई

(यदि इंटरेक्टिव मोड के लिए स्टेटमेंट जांचता है)

आम तौर पर, ऊपर और नीचे ReadLine कार्यों के लिए बाध्य कर रहे हैं previous-historyऔर next-historyक्रमशः। मैं इन कार्यों के लिए PgUp / PgDn को बाँधना पसंद करता हूँ, बजाय ऊपर / नीचे के सामान्य संचालन को विस्थापित करने के।

# ~ / .inputrc
"ई '[5 ~": इतिहास-खोज-पिछड़ा
"ई '[6 ~": इतिहास-खोज-आगे

आपके द्वारा संशोधित किए जाने के बाद ~/.inputrc, अपने शेल को पुनरारंभ करें या इसे फिर से पढ़ने के लिए बताने के लिए Ctrl+ X, Ctrl+ Rका उपयोग करें ~/.inputrc


वैसे, यदि आप प्रासंगिक दस्तावेज ढूंढ रहे हैं:

बैश शेल प्रांप्ट और इतिहास के लिए जीएनयू रीडलाइन लाइब्रेरी का उपयोग करता है ।


आपके उत्तर के लिए धन्यवाद। यह परिचित आवाज करता है, लेकिन दुर्भाग्य से मेरे लिए काम नहीं करता है। इसे .inputrc में रखने से कुछ नहीं बदलता है और इसे .bashrc में तीर को कुछ भी करने से रोकते हैं। कोई विचार?
ब्लोककी

कोई बात नहीं। इतिहास-पूर्ण- * मौजूद नहीं है; केवल इतिहास-खोज- * कार्य मौजूद हैं। धन्यवाद!
ब्लोकी

आह, मैंने स्पष्ट रूप से पहले दो उदाहरणों को गलत समझा ... पिछले एक सही था, हालांकि। मैं उसे ठीक कर दूंगा।
अपरिपक्व

@ user1037114: यह स्वयं में एक प्रश्न है, आपको इसे स्वयं पोस्ट पर पूछना चाहिए।
kamaradclimber

यह बैश में vi मोड का उपयोग करके मेरे लिए अप / डाउन एरो तय करता है। ध्यान दें, मुझे काम करने के लिए "Esc" (कमांड मोड) को हिट करना होगा।
क्रिस

5

निम्नलिखित के साथ अद्यतन .inputrc:

"\C-[OA": history-search-backward
"\C-[[A": history-search-backward

"\C-[OB": history-search-forward
"\C-[[B": history-search-forward

4
वे क्या कुंजियाँ हैं?
क्रिस

मुझे नहीं पता कि ये कुंजियाँ विशेष रूप से क्या हैं, लेकिन इस उत्तर ने मेरे लिए यह कार्यक्षमता तब निर्धारित की जब अप और डाउन कीज़ ने X11 पर tmux और st टर्मिनल का उपयोग करते हुए इतिहास खोज नहीं की।
3/3 पर razzintown

1
@razzintown सेंट के लिए आप शायद है set enable-keypad onके लिए delठीक से काम करने के लिए कुंजी ( फैक )। जब कीपैड तीर कुंजी पर है "\C-[OA"और "\C-[OB"(और "\C-[OC"और "\C-[OD")। मैंने इसे स्पष्ट करने के लिए एक उत्तर-पुस्तिका पोस्ट की।
मॉरीशियोराबायो

@ क्रिस उन कीपैड मोड ऊपर और नीचे तीर कुंजियाँ हैं, और एएनएसआई मोड ऊपर और नीचे तीर कुंजी। मेरा उत्तर देखिए
MauricioRobayo

3

यदि set enable-keypad onआपके ~/.inputrcकुछ सेंट ( चूसना रहित सरल टर्मिनल ) उपयोगकर्ताओं के रूप में हैं, तो ध्यान रखें कि की-पैड मोड में तीर कुंजियाँ हैं। इस उपयोगी के साथ Ubuntu जहाज /usr/share/doc/bash/inputrc.arrows:

# This file controls the behaviour of line input editing for
# programs that use the Gnu Readline library.
#
# Arrow keys in keypad mode
#
"\C-[OD"        backward-char
"\C-[OC"        forward-char
"\C-[OA"        previous-history
"\C-[OB"        next-history
#
# Arrow keys in ANSI mode
#
"\C-[[D"        backward-char
"\C-[[C"        forward-char
"\C-[[A"        previous-history
"\C-[[B"        next-history
#
# Arrow keys in 8 bit keypad mode
#
"\C-M-OD"       backward-char
"\C-M-OC"       forward-char
"\C-M-OA"       previous-history
"\C-M-OB"       next-history
#
# Arrow keys in 8 bit ANSI mode
#
"\C-M-[D"       backward-char
"\C-M-[C"       forward-char
"\C-M-[A"       previous-history
"\C-M-[B"       next-history

इसलिए मुझे यकीन नहीं है कि अगर आपको इसकी आवश्यकता होगी, लेकिन यह आपके लिए नुकसान नहीं पहुंचा सकता है ~/.inputrc:

# Arrow keys in keypad mode
"\C-[OA": history-search-backward
"\C-[OB": history-search-forward
"\C-[OC": forward-char
"\C-[OD": backward-char

# Arrow keys in ANSI mode
"\C-[[A": history-search-backward
"\C-[[B": history-search-forward
"\C-[[C": forward-char
"\C-[[D": backward-char

यह भी इसी विषय पर है: मेरे कर्सर कुंजियाँ काम नहीं करती हैं और यह भी xterm: विशेष कुंजी


1

Ohmyzsh के साथ, अपने में इस का उपयोग .zshrc :

bindkey '^[OA' history-search-backward
bindkey '^[OB' history-search-forward

पुनः लोड करना, source ~/.zshrcया टर्मिनल को फिर से लोड करना ।

स्रोत: https://superuser.com/a/418299/71680


Zsh पर मेरे लिए जो काम किया गया वह स्रोत लिंक में दिया गया विकल्प था: bindkey '\ e [a-history-search-backward bindkey' \ e [B 'इतिहास-खोज-आगे
माइकल मैसी

-3

आपको बैश पूर्णता को सक्षम करने की आवश्यकता हो सकती है।

जाँच

  • /etc/profile
  • /etc/bash.bashrc
  • ~/.bashrc

यह देखने के लिए कि उपरोक्त फ़ाइलों में से कोई स्रोत है या नहीं /etc/bash_completion। अर्थात

। / Etc / bash_completion

यदि /etc/bash___completionउपरोक्त फ़ाइलों में से किसी के द्वारा खट्टा नहीं किया गया है, तो आपको इसे उनमें से एक में जोड़ना होगा।

यदि आप चाहते हैं कि आपके मशीन पर सभी बैश उपयोगकर्ताओं को बैश पूरा होने से, स्रोत /etc/bash_completionसे /etc/bash.bashrc

अगर यह सिर्फ आप है जो बैश पूरा करना चाहता है, /etc/bash_completionअपने स्रोत से ~/.bashrc


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