ฉันจะโหลด. inputrc ได้อย่างไร


98

พื้นหลัง

ฉันได้ยินมาว่าโมดูลreadlineกำลังอ่าน~/.inputrcและนั่นคือการเปลี่ยนแปลงพฤติกรรมของการกดแป้นในโปรแกรมเช่นทุบตี

คำถาม

ฉันจะโหลดซ้ำได้หลังจากแก้ไขเพื่อดูพฤติกรรมที่เปลี่ยนแปลงโดยไม่ต้องเริ่มโปรแกรมเทอร์มินัลใหม่


8
พื้นหลัง(ไม่ผิด)
Dennis Williamson

3
ฉันมาที่นี่เพื่อค้นหาวิธีการโหลด. inputc ด้วยคำสั่ง superuser.com/q/419670/56544
dfrankow

1
@CaptainLepton ฉันเห็นแล้ว เทอร์มินัลไม่เหมือนกับเชลล์ การทำexec bashในเซสชั่น Bash จะแทนที่เซสชั่นเชลล์ปัจจุบันด้วยเซสชั่น Bash ใหม่ xtermเป็นสถานี
Kusalananda

1
@ Kusalananda ขอบคุณสำหรับการชี้แจง เป็นความคิดที่ดี. คุณอาจจะอธิบายการเรียกใช้> exec bash เป็นการรันเชลล์ใหม่ในเทอร์มินัลปัจจุบันแทนที่จะรีสตาร์ท bash ในขณะที่คุณกำลังแทนที่โปรแกรมก่อนหน้านี้?
กัปตัน Lepton

1
ใช่ไม่มีวิธี "เริ่มต้นใหม่" เซสชั่นเชลล์ปัจจุบัน นี่เป็นวิธีหนึ่งในการทำมัน การใช้โซลูชันที่ @maxelost มอบให้นั้นเป็นอีกวิธีหนึ่ง
Kusalananda

คำตอบ:


82

โดยค่าเริ่มต้นที่ถูกผูกไว้C-x C-rre-read-init-file

ดูคู่มืออ้างอิง Bashสำหรับคำอธิบาย


4
มันไม่ได้ผลสำหรับฉัน ฉันลองทำแผนที่ต่างกันในไฟล์. inputrc และก็ไม่มีโชค: "\ eX \ eR": re-read-init-file คำแนะนำใด ๆ
Captain Lepton

6
@ กัปตันจริง ๆ แล้วมันทำยกเว้นว่ามันไม่ได้ล้างการกดแป้นที่ถูกลบในระหว่างนี้ หากคุณเช่นเพิ่มบางส่วนพวกเขาจะถูกโหลด โซลูชันเดียวของคุณสำหรับสิ่งเหล่านี้คือใหม่bash -l(เชลล์ที่ทำงานเหมือนเชลล์ล็อกอิน) ที่เริ่มต้นใหม่
Daniel Beck

ฉันกำลังแก้ไข/etc/inputrcแต่ฉันมีรายการเกือบหมด~/.inputrcที่ทำให้ไม่สามารถ/etc/ใช้งานได้ การลบ~/.inputrcทำให้การอ่าน/etc/inputrcและการเปลี่ยนแปลงของฉันใช้งานได้
Malvineous

1
@Malvineous ฉันเคยชินกับสิ่งนั้นมาก่อน .. ถ้าคุณเพิ่ม$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)) จะไม่ทำงาน มันน่ารำคาญนิดหน่อย คุณรู้หรือไม่ว่าฉันสามารถทำอะไรได้ในส่วนนี้
Enrico Maria De Angelis


10

ใน. inputrc ก่อนอื่นให้เลือกการโยงของคุณและหลังจากผูกre-read-init-fileฟังก์ชัน:

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

กดCTRLและxปล่อยทั้งกดและCTRLr

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.