Alt-Left เพื่อข้ามคำไม่ทำงานในเทอร์มินัลอีมูเลเตอร์


16

บนเครื่อง Debian Wheezy ที่งานก่อนหน้านี้ฉันคุ้นเคยกับ Alt + Left และ Alt + Right เพื่อข้ามระหว่างคำในบรรทัดคำสั่งที่ใช้งานอยู่ (เป็นทุบตี)

แต่เนื่องจากที่บ้านผมได้อัพเกรดไปเจสซี่ (Debian 8.0 การทดสอบสาขา) นี้ไม่ได้ทำงานอีกต่อไป: แทนการกระโดดข้ามกับคำพูดก่อนหน้า Alt-ซ้ายพิมพ์สิ่งที่ต้องการหรือD [DOTOH ถ้าฉันเปิด ssh และเชื่อมต่อกับ Debian Wheezy ที่ไม่มีหัวของฉันมันจะทำงานได้อย่างสมบูรณ์แบบ

นอกจากนี้ฉันเพิ่งติดตั้ง Fedora 20 ในงานใหม่ของฉันและที่นี่มีพฤติกรรมเหมือนกัน สิ่งนี้ใช้กับ bash, csh และ ksh (เริ่มต้นภายใต้env -i), เช่นเดียวกับ rxvt-unicode และ xfce4-terminal ดังนั้นมันจะต้องเป็นสิ่งที่อยู่นอกระดับเหล่านี้

ฉันควรมองหาความแตกต่างที่ไหน


4
ฉันขอแนะนำให้ลอง alt-b และ alt-f (เช่นเดียวกับส่วนที่เหลือของคีย์ readline) เนื่องจากมันเป็นสากลมากขึ้นและมีโปรแกรมบรรทัดคำสั่งจำนวนมากที่ให้เกียรติการเชื่อมโยง readline
เอียงอาย

คำตอบ:


21

คุณอาจมีไฟล์ภายในเครื่อง~/.inputrcหรือ/etc/inputrcไฟล์โกลบอลที่กำหนดว่าหายไปจากการอัพเกรด การแก้ไขที่ง่ายคือการสร้าง~/.inputrcไฟล์ด้วยบรรทัดต่อไปนี้:

## enable Alt-arrows 
"\e[1;3D": backward-word ### Alt left
"\e[1;3C": forward-word ### Alt right

สิ่งเหล่านี้จะทำงานร่วมกับxtermและterminatorและgnome-terminalแต่อาจจำเป็นต้องมีการปรับแต่งสำหรับเทอร์มินัลอื่น ๆ น่าเสียดายที่เทอร์มินัลอีมูเลเตอร์แต่ละเครื่องสามารถใช้ไวยากรณ์ที่แตกต่างกันได้ สำหรับรายละเอียดเพิ่มเติมบางส่วนให้ดูคำตอบของฉันที่นี่


ฉันหมายถึง Alt จริงๆและมันก็ยังใช้งานได้กับเครื่องระยะไกล Ctrl + ซ้าย / ขวาใช้ Rxvt แล้วเพื่อย้ายแท็บไปทางซ้ายและขวา (Shift + ซ้าย / ขวาสลับแท็บและ Shift + Down เพื่อเปิดแท็บใหม่)
Alois Mahdal

1
ในขณะที่ Ctrl + Left / Right เป็นเรื่องปกติในตัวแก้ไข GUI เทอร์มินัลนั้นแตกต่างไปจากโลกอย่างสิ้นเชิงซึ่งฉันยังไม่เห็นชุดค่าผสมนั้น
Alois Mahdal

10

terdon ตั้งฉันไปในทิศทางที่ถูกต้อง: ไฟล์inputrc

ผู้กระทำผิดนั้นค่อนข้างจะไม่ใช้สัญชาตญาณ readline6 ใช้ ~ / .inputrc แทน / etc / inputrc ซึ่งreadline (3)ไม่เน้นหรือโต้แย้ง:

ชื่อของไฟล์นี้นำมาจากค่าของตัวแปรสภาพแวดล้อม INPUTRC หากตัวแปรนั้นไม่มีการตั้งค่าไว้ค่าเริ่มต้นคือ ~ / .inputrc หากไฟล์นั้นไม่มีอยู่หรือไม่สามารถอ่านได้ค่าเริ่มต้นสุดท้ายคือ / etc / inputrc

ดังนั้นในขณะที่ในทั้งบนเครื่อง Debian / etc / inputrc เป็นเหมือนที่ระบุไว้ตามlibreadline6แพคเกจ (รุ่นจะเหมือนกันเช่นกัน) บนเครื่องใหม่ ~ / .inputrc set bell-style noneอยู่กับสายเดียว: เมื่อไฟล์นี้ถูกลบทุกอย่างจะทำงานได้ดี (ดูหมายเหตุด้านล่าง)

ฉันไม่สามารถตรวจสอบ Fedora ได้จนถึงพรุ่งนี้ แต่ฉันคิดว่ามันเป็นปัญหาเดียวกัน อัปเดต:บน Fedora ~ / .inputrc ไม่มีอยู่ที่นี่ / etc / inputrc จะแตกต่างกันเพียงเล็กน้อยดังนั้นจึงอาจไม่ได้กำหนดสิ่งนี้ ในฐานะที่เป็นโปรแกรมแก้ไขด่วนฉันเพียงบันทึก Debian ของ inputrc เป็น ~ / .inputrc ของฉัน


หมายเหตุ:

ความลึกลับที่ว่ามันเปลี่ยนไปในระหว่างการอัพเกรด 7> 8 ยังคงไม่ได้รับการแก้ไข แต่ส่วนหนึ่งสามารถเป็นหน่วยความจำที่ไม่ดีของฉันและการเล่นกล dotfiles โดยไม่ตั้งใจบางส่วน (BTW มันไม่ใช่การอัพเกรด APT แต่ติดตั้งใหม่และย้าย dotfile แบบแมนนวลดังนั้นบางที ~ .inputrc เข้าไปในทางใดทางหนึ่ง)

นอกจากนี้เมื่อฉันพูดว่าตกลงฉันหมายความว่ามันทำงานกับ Ctrl ได้ทุกที่ยกเว้น Rxvt (ตกลงฉันตรวจสอบเทอร์มินัล xfce4 เท่านั้น แต่เรารู้ว่า Rxvt เป็นกบฏตามปกติ) ซึ่งนี่คือ remapped ไปที่ Alt เพราะเห็นได้ชัดว่า Ctrl นำโดย Rxvt ฟังก์ชั่นที่เฉพาะเจาะจง - ย้ายแท็บที่ใช้งานอยู่ในรายการ

ในฐานะที่เป็น manpage กล่าวถึงด้วยการทุบตีคุณสามารถใช้คำสั่งผูกในตัวเพื่อตรวจสอบสิ่งที่คุณมีอยู่ในปัจจุบัน


จับได้ดี +1 จริงๆแล้วมันใช้งานง่ายกว่าที่คุณคิด พฤติกรรมเริ่มต้นสำหรับ dotfiles เฉพาะผู้ใช้จะมีความสำคัญมากกว่าค่าเริ่มต้นของทั้งระบบ มิฉะนั้นผู้ใช้จะไม่สามารถเปลี่ยนการตั้งค่าของพวกเขา
terdon

ดูคำตอบที่อัปเดตเกี่ยวกับวิธีเปิดใช้งานลูกศร Alt + โดยเฉพาะ
terdon

2
นี่เป็นเรื่องปกติคุณต้องการ$include /etc/inputrcที่ด้านบนของ~/.inputrcถ้าคุณต้องการที่จะอ่านเช่นกัน
คริสลง

@terdon มันสมเหตุสมผลดีที่จะชอบการตั้งค่าของผู้ใช้ก่อนทั้งระบบ แต่สิ่งที่ฉันเห็นว่าเป็นสัญชาตญาณมากกว่านั้นคือ ~ /. initrc จะ "ผสาน" เป็น / etc / initrc (เช่น / etc / initrc จะเป็น$included โดยค่าเริ่มต้น).
Alois Mahdal

1
ดู: 1. ตัวเลือกฮาร์ดโค้ด 2. / etc / initrc, 3. ~ / .initrc --vs-- 1. ตัวเลือกฮาร์ดโค้ด 2. / etc / initrc หรือ ~ / .initrc วิธีแรกมีความยืดหยุ่นมากขึ้นเนื่องจากสามารถขยายไปยังระดับล่างได้อย่างง่ายดาย (เช่นต่อโครงการดีฉันยอมรับว่าตัวอย่างนี้ไม่สมเหตุสมผลกับ readline แต่คุณได้ประเด็น)
Alois Mahdal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.