मैं कैसे पुनः लोड करूँ .inputrc?


98

पृष्ठभूमि

मैंने सुना है कि रीडलाइन मॉड्यूल पढ़ रहा है ~/.inputrcऔर इसी तरह यह बैश जैसे कार्यक्रमों के तहत कीस्ट्रोक्स के व्यवहार को बदलता है।

सवाल

अपने टर्मिनल प्रोग्राम को फिर से शुरू किए बिना बदले हुए व्यवहार को देखने के लिए संपादन के बाद मैं इसे कैसे लोड कर सकता हूं?


8
पृष्ठभूमि (गलत नहीं)
डेनिस विलियमसन 16

3
मैं एक कमांड के साथ .inputrc लोड करने के तरीके की तलाश में यहां आया था। superuser.com/q/419670/56544
dfrankow

1
@CaptainLepton मैंने वह देखा। टर्मिनल शेल के समान नहीं है। exec bashएक बैश सत्र में करना वर्तमान शेल सत्र को नए बैश सत्र के साथ बदल देगा। xtermएक टर्मिनल है।
कुसलानंद

1
@ कुसलानंद स्पष्टीकरण के लिए धन्यवाद। यह एक अच्छा विचार है। क्या आप शायद अपने पिछले निष्पादन योग्य की जगह ले रहे हैं, आप बैश को फिर से शुरू करने के बजाय चालू टर्मिनल में एक नया शेल चलाने के रूप में चला सकते हैं?
कप्तान लेप्टन

1
हां, वर्तमान शेल सत्र को "पुनरारंभ" करने का कोई तरीका नहीं है। यह करने का एक तरीका है। @Maxelost ने जो समाधान दिया है उसका उपयोग करना एक और है।
कुसलानंद

जवाबों:


82

डिफ़ॉल्ट रूप से, के C-x C-rलिए बाध्य है re-read-init-file

स्पष्टीकरण के लिए बैश संदर्भ मैनुअल देखें ।


4
यह मेरे लिए काम नहीं करता है। मैंने .inputrc फ़ाइल में एक अलग मैपिंग की कोशिश की और कोई भाग्य भी नहीं: "\ eX \ eR": पुनः-पठन-इन-फाइल कोई सुझाव?
कप्तान लेप्टान

6
@ कैप्टेन वास्तव में, यह करता है, सिवाय इसके कि कीस्ट्रोक्स को स्पष्ट नहीं करता है जो इस बीच हटा दिए गए थे। यदि आप उदाहरण के लिए कुछ जोड़ते हैं, तो वे लोड किए जाते हैं। आपके लिए इनका एकमात्र समाधान एक नया bash -l(शेल जो एक लॉगिन शेल की तरह व्यवहार करता है) है जो ताज़ा रूप से आरंभिक है।
डैनियल बेक

मैं संपादन /etc/inputrcकर रहा था लेकिन मेरे पास लगभग खाली ~/.inputrcथा जो एक का /etc/उपयोग करने से रोक रहा था। ~/.inputrcइसे हटाने से /etc/inputrcमेरे परिवर्तन सक्रिय हुए और पढ़े ।
मालविनस

1
@ मैल्वाइन मुझे पहले भी पकड़ा जा चुका है .. अगर आप $include /etc/inputrcऊपर से जोड़ दें तो ~/.inputrcयह इस समस्या से बचा जाता है।
mwfearnley

53

आप कमांड लाइन से नई प्रविष्टियों को पुनः लोड कर सकते हैं bind -f ~/.inputrc। यह .inputrc में प्रविष्टियों को लोड करेगा। ध्यान दें कि यह केवल एक लोड करता है, न कि "पुनः लोड" - इसलिए यह किसी भी लाइन को रीसेट नहीं करता है जिसे आप .inputrc से हटाते हैं।

एक साफ स्लेट से जल्दी से परीक्षण करने के लिए, बस चलाएं bashफिर उस नए नेस्टेड शेल के अंदर काम करें (या एक नया टर्मिनल शुरू करें)।


मैं देख रहा हूँ, मुझे सही करें अगर मैं गलत हूं, तो यह bind -fवास्तव में केवल एक फ़ाइल नाम को स्वीकार करता है, और एक फ़ाइल नहीं, इसलिए कुछ bind -f <(echo 'one line with ~/.inputrc syntax')(या, तुच्छ रूप से bind -f <(cat ~/.inputrc)) काम नहीं करेगा। यह थोड़ा कष्टप्रद है। क्या आप जानते हैं कि मैं इस संबंध में क्या कर सकता था?
एनरिको मारिया डी एंजेलिस


10

Ininputrc पहले अपने बाइंडिंग को चुनें और re-read-init-fileफंक्शन को बाँधने के बाद :

set editing-mode vi
"\C-x\C-r": re-read-init-file

प्रेस CTRLऔर x, दोनों को रिलीज करें, दबाएं CTRLऔर r

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