วิธีเปลี่ยนช็อตคัตคำก่อนหน้า / ถัดไปเป็น bash?


20

ฉันจะกำหนดค่า Ctrl-Left และ Ctrl-Right เป็นทางลัดคำก่อนหน้า / ถัดไปสำหรับ bash (ปัจจุบัน alt-b และ alt-f) ได้อย่างไร


อืมคำถามนี้ไม่ส่งเสียงกริ่งหรือ?
Gilles 'หยุดความชั่วร้าย'

@Gilles - ฉันคิดว่าฉันถามสิ่งที่คล้ายกันมาก่อนใช่ขอโทษ ปิดต้นฉบับเป็นสำเนา (เพราะเป็นของที่นี่มากกว่าที่ Super User)
ripper234

คำตอบ:


26

คำตอบที่ถูกต้องขึ้นอยู่กับเทอร์มินัลที่คุณใช้

สำหรับเทอร์มินัล Gnome หรือ xterm รุ่นล่าสุดให้ใส่สิ่งนี้ใน ~ / .inputrc:

"\e[1;5C": forward-word
"\e[1;5D": backward-word

สำหรับ PuTTY ใส่สิ่งนี้ใน ~ / .inputrc ของคุณ:

"\eOC": forward-word
"\eOD": backward-word

สำหรับ rxvt ให้ใส่สิ่งนี้ใน ~ / .inputrc ของคุณ:

"\eOc": forward-word
"\eOd": backward-word

คุณอาจหนีจากการรวมทั้งหมดเข้าด้วยกันใน ~ / .inputrc

ในทุกกรณีคุณต้องใส่สิ่งนี้ใน ~ / .bashrc (หรือ ~ / .zshrc) ของคุณ:

export INPUTRC=~/.inputrc

หากไม่ได้ทำงานหรือคุณมีขั้วที่แตกต่างกันไปที่สถานีของคุณและพิมพ์Ctrl+ +V Ctrl ->จากนั้นใช้สิ่งนั้นแทน"\e[1;5C"หรือ"\eOC"สูงกว่า ทำซ้ำสำหรับ+Ctrl<-

โปรดทราบว่าคุณต้องเขียนลำดับการหลีกเลี่ยงของแป้นพิมพ์โดยใช้ไวยากรณ์ inputrcเช่น

  • \C หมายถึงการควบคุม
  • \eหมายถึง escape (ซึ่งปรากฏขึ้น^[เมื่อพิมพ์โดยใช้ Ctrl + V ด้านบน)

Ctrl + V, Ctrl -> พิมพ์ "^ [[1; 5C" และฉันใช้ gnome-terminal
ripper234

2
ลองดู"\e[1;5C": forward-wordสิ และทำCtrl+ Vสิ่งสำหรับCtrl+ Left Arrowเกินไป
มิเคล

ขอบคุณทำงานเหมือนจับใจ ช้า แต่แน่นอนฉันจะเรียนรู้วิธีการว่ายน้ำใน linux ทำไมพวกเขาต้องทำให้มันไม่ง่ายในตอนแรก? (คุณต้องยอมรับ ctrl-left, ctrl-right เป็นตัวเลือกที่ดีกว่า)
ripper234

1
หากคุณคิดว่าลีนุกซ์ไม่ง่ายสำหรับการเริ่มต้น, ลองติดตั้ง FreeBSD หรือ Solaris เป็นค่าเริ่มต้น มีทุบตีเป็นเปลือกเริ่มต้นของคุณเป็นความฝัน นอกจากนี้เนื่องจากคีย์บอร์ดไม่ได้มีปุ่มลูกศร, Emacs และดังนั้นจึงทุบตีทางลัดเพื่อรองรับเช่นกัน ลองใช้ Ctrl-b และ Ctrl-f สักครู่
penguin359

2
ความสวยงามของระบบ UNIX / Linux นั้นง่ายต่อการเคลื่อนย้ายการตั้งค่า เมื่อคุณได้รับรายการโปรดของคุณในแบบที่คุณชอบเพียงแค่คัดลอกมันไปรอบ ๆ ฉันใช้การควบคุมเวอร์ชันสำหรับไฟล์ไดเรกทอรีหลักเช่น. inputrc, .bashrc, .vimrc เป็นต้น ฉันใช้ mercurial เพื่อโคลนและทำให้การตั้งค่าไดเรกทอรีบ้านทั้งหมดเป็นปัจจุบันระหว่างคอมพิวเตอร์ ฉันยังวางแผนที่จะเผยแพร่ repo ของฉันในบางจุดเพื่อให้คนอื่น ๆ สามารถแบ่งปันมันได้อย่างเต็มที่
penguin359

3

หากคุณใช้ ZSH คุณจะต้องใช้วิธีการอื่นเนื่องจากการอ้างอิงส่วนที่เกี่ยวข้องจากคู่มือ ZSH ของ ArchLinux :

Zsh ไม่ได้ใช้ readline #like bash # แทนจะใช้ zle ของตัวเองและมีประสิทธิภาพมากกว่า

ไม่อ่าน / etc / inputrc หรือ ~ / .inputrc

หลังจากอ่านคำแนะนำนั้นฉันคิดว่าฉันต้องการแหล่ง modren ของ ZSH เพื่อให้ได้แนวคิดทั่วไปเกี่ยวกับวิธีการทำเช่นนี้ฉันจึงพบไฟล์oh-my-zshซึ่งอธิบายพฤติกรรมที่ฉันต้องการฉันคัดลอกส่วนที่เกี่ยวข้องฉัน ต้องการเป็นของฉัน ~ / .zshrc:

bindkey -e #Use emacs mode, it's more sane for beginners
bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - move forward one word
bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word
# Also, If you want to copy paste this into your zshrc,
# I'm pretty sure you would have to add this at the top : 
# setopt interactive_comments

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