2009-06-23 11 views
114

मैं दो महीने पहले एक आदेश में पाया गया कि मेरी पार्टी इतिहास स्वत: पूर्ण क्या लाइन पर पहले से ही है जब ऊपर तीर दबाने पर किए गए:मैं लाइन पर पहले से क्या पूरा करने के लिए बैश इतिहास पूर्णता को बदलूं?

$ vim fi 

प्रेस

$ vim file.py 

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

क्या किसी को आदेश पता है?

उत्तर

193

शायद

 
# ~/.inputrc 
"\e[A": history-search-backward 
"\e[B": history-search-forward 

या समतुल्य

 
# ~/.bashrc 
if [[ $- == *i* ]] 
then 
    bind '"\e[A": history-search-backward' 
    bind '"\e[B": history-search-forward' 
fi 

(यदि इंटरैक्टिव मोड के लिए बयान चेक)

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

 
# ~/.inputrc 
"\e[5~": history-search-backward 
"\e[6~": history-search-forward 

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


वैसे, आप प्रासंगिक दस्तावेज के लिए देख रहे हैं:

बैश सुरक्षा प्रॉम्प्ट और इतिहास के लिए The GNU Readline Library उपयोग करता है।

+0

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

+0

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

+0

आह, मैंने स्पष्ट रूप से पहले दो उदाहरणों को गलत टाइप किया ... आखिरी वाला सही था, हालांकि। मैं इसे ठीक कर दूंगा। – ephemient

-3

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

चेक

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

देखने के लिए कि ऊपर फ़ाइलों स्रोत /etc/bash_completion के किसी भी। अर्थात

 
. /etc/bash_completion 

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

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

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

+2

टैब पूर्णता अच्छा है, लेकिन इतिहास की याद के समान नहीं है, जो मूल पोस्टर पूछ रहा था। – ephemient

1

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

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

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

स्रोत: निम्नलिखित के साथ https://superuser.com/a/418299/71680

+0

zsh पर मेरे लिए क्या काम किया गया था स्रोत लिंक में दिया गया विकल्प: बाइंडकी 'ई [ए' इतिहास-खोज-पिछड़ा बाइंडकी 'ई [बी' इतिहास-खोज-आगे –

3

अद्यतन .inputrc:

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

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

उन कुंजी क्या हैं? – Chris

+0

मुझे नहीं पता कि ये कुंजी विशेष रूप से क्या हैं, लेकिन इस उत्तर ने मेरे लिए इस कार्यक्षमता को ठीक किया जब ऊपर और नीचे कुंजी ने X11 पर tmux और st टर्मिनल का उपयोग करते समय इतिहास खोज नहीं की। – razzintown

+0

@razzintown सेंट के लिए संभवतः 'del' कुंजी के लिए ठीक से काम करने के लिए 'सक्षम सक्षम-कीपैड' सेट है ([faq] (http://git.suckless.org/st/tree/FAQ))। जब तीर कुंजियों पर कीपैड होता है तो \ "\ C- [OA" 'और' "\ C- [OB" '(और' "\ C- [OC" 'और' "\ C- [OD" ') होता है। मैंने इसे स्पष्ट करने के लिए उत्तर दिया। – archemiro

0

तो set enable-keypad on कुछ सेंट (suckless simple terminal) उपयोगकर्ताओं के रूप में अपने ~/.inputrc में है, के बारे में पता हो सकता है कि तीर कुंजी कीपैड मोड में हैं । इस उपयोगी /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 

एक ही विषय: My cursor keys do not work और यह भी xterm: special keys

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