เทอร์มินัล OS X เทียบเท่ากับ Ctrl + ซ้าย / Ctrl + ขวา


19

ใน Windows และ Linux ฉันสามารถกดctrl+ หรือctrl+ เพื่อข้ามคำไปทางซ้ายหรือขวาใน terminal ในเครื่องมือแก้ไขข้อความดูเหมือนว่า+ / ทำงานได้ แต่ไม่มีลูกเต๋าอยู่ในเทอร์มินัล ฉันค้นหา Google และไม่พบสิ่งใดนอกจากหน้า Wikipedia ที่อ้างว่า+ B/ Fทำงานได้ แต่ทั้งหมดนั้นคือพิมพ์∫และƒอักขระไปยังเทอร์มินัลของฉัน (หรือıและÏถ้าฉันถือ) ความคิดใด ๆ

คำตอบ:


12

คุณสามารถใช้คีย์ได้ แต่คุณต้องเลือกตัวเลือกเพื่อใช้เป็นคีย์ "meta": ข้อความแสดงแทน

เมื่อคุณทำเช่นนั้นแล้ว+ Fและ+ Bจะทำงานตามที่คุณคาดหวัง


ยอดเยี่ยม ... มันทำให้ฉันคลั่งไคล้เป็นเวลานาน ขอบคุณ
Robert S Ciaccio

2
ตรวจสอบapple.stackexchange.com/q/1391/115เพื่อดู“ ข้อเสีย” ที่เป็นไปได้ของตัวเลือกนั้น
Martin Marconcini

คำตอบที่ยอดเยี่ยม +1
Soner Gönül

12

นี่คือสิ่งที่ทำให้ฉันบ้าเหมือนกัน แต่ฉันไม่ต้องการการแก้ไขเฉพาะเทอร์มินัลเนื่องจากฉันไม่ได้ใช้ Terminal และการที่สามารถ SSH ลงในกล่อง OSX ของฉันก็ต้องใช้การเชื่อมโยงคีย์ที่ถูกต้องด้วย

โดยส่วนตัวแล้วฉันไม่ได้สนใจเรื่องกุญแจตามที่กล่าวไว้ก่อนหน้านี้ ฉันต้องการรักษาctrl+ / ชุดที่ฉันคุ้นเคยกับ Linux

เพื่อแก้ไขปัญหานี้ฉันได้เพิ่มสิ่งต่อไปนี้ใน~/.profile:

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

โปรดทราบว่าสองรายการแรกนำไปใช้กับการทุบตีในTerminal ; สองอันสุดท้ายนำไปใช้กับการทุบตีในiTerm2และการเชื่อมต่อssh ที่เข้ามา อย่าถามฉันว่าทำไมการเลียนแบบแป้นพิมพ์จึงแตกต่าง;)

สำหรับเร็กคอร์ดฉันสามารถค้นหาสิ่งที่รหัสจริงขอบคุณด้วยคำใบ้จากคำตอบ stackoverflow นี้ : คุณสามารถเรียกใช้cat > /dev/nullเพื่อตรวจสอบรหัสที่แน่นอนที่ส่งระหว่างการรวมกันของคีย์

(หมายเหตุว่าสำหรับฉันเมื่อฉันทำงานcat > /dev/nullและกดctrl+ จะผลิต^[[1;5D. keycode ที่แน่นอนของคุณอาจแตกต่างกันแต่แรก^[จะแสดงเป็น\eดังที่แสดงในตัวอย่างรหัสของฉัน.)

BTW ถ้าคุณต้องการที่จะเห็นทั้งหมด keybindings bind -pทุบตีใช้งานวิ่ง


ฉันชอบที่จะใช้xxdในการตรวจสอบการป้อนข้อมูลแป้นพิมพ์ คุณสามารถเห็นตัวละครที่ปรากฏในขณะที่คุณพิมพ์จากนั้นxxdปล่อยค่าเป็น hex เมื่อคุณพิมพ์ return
Chris Page

ที่สมบูรณ์แบบ! สิ่งที่ฉันกำลังมองหา :) ไม่เคยโชคดีในการตั้งค่า "เฉพาะแอพ" ด้านบน แต่นี่ใช้งานได้!
bisko

ตรวจสอบให้แน่ใจว่าการควบคุม + ซ้าย / ขวาไม่ได้ถูกแมปกับ "สลับช่องว่าง" ใน sysprefs ของคุณ> คีย์บอร์ด> ทางลัด> exposé ฉันไม่ได้เว้นช่องว่างอื่น ๆ ดังนั้นมันจึงดูเหมือนว่าคีย์บอร์ดของฉันไม่ทำงาน
sudo

6

ในฐานะของ Mac OS X Lion 10.7 เทอร์มินัลแมป- / ถึงesc+ B/ Fโดยค่าเริ่มต้นดังนั้นตอนนี้จึงมีอยู่แล้วสำหรับ bash และโปรแกรมอื่น ๆ ที่ใช้การเชื่อมโยงคีย์ที่เข้ากันได้กับ emacs


5

ถ้าคุณรู้วิธีใช้ vi คุณสามารถเปิดโหมดแก้ไขบรรทัด vi โดยใช้set -o viใน.bash_profileหรือในบรรทัดคำสั่งได้ตลอดเวลา จากนั้นคุณสามารถสลับไปมาระหว่างคำสั่ง vi และโหมดแทรก ดังนั้นคุณสามารถกดหลบหนีได้จากนั้นใช้คำสั่ง vi เพื่อสำรวจเส้นทาง:

0 = move to beginning of line
$ = move to end of line
w = move forward one word
b = move backward one word

เมื่อคุณไปถึงตำแหน่งที่ถูกต้องคุณสามารถใช้คำสั่ง vi อื่น ๆ เพื่อเข้าสู่โหมดแทรกหรือต่อท้ายหรือลบตัวอักษรทีละตัวเป็นต้น


ฉันไม่เคยรู้เลยว่าคุณสามารถใช้ 0 เป็นจุดเริ่มต้นได้ฉันมักจะใช้ ^
Jason Salaz

1
@ vxjasonxv: ya, ^ ย้ายไปที่ช่องว่างไม่ใช่ช่องว่างแรก 0 ย้ายไปที่คอลัมน์แรก (ซึ่งคุณอาจสังเกตเห็นแล้ว แต่ฉันคิดว่าฉันคิดว่าฉันจะทิ้งมันไว้ที่นั่นเพื่อคนอื่น ๆ : P)
Robert S Ciaccio

1
โอ้วว่ามันดีกว่าฉันยังไม่ได้สังเกตเลย! โอ้มนุษย์ฟังก์ชั่นนั้น (ไม่ใช่ช่องว่างแรก) ของ ^ จะทำให้ฉันโกรธ ขอบคุณ.
Jason Salaz

แน่นอนESC ^เป็นที่ดีเมื่อคุณทำจำเป็นมันน่ารำคาญเพียงเมื่อคุณอยากจะทำสิ่งอื่นทั้งหมด :)
ocodo

3

เปิดเทอร์มินัลไปที่การตั้งค่าแป้นพิมพ์ ในรายการคุณจะพบ“ เคอร์เซอร์ ctrl ขวา” และ“ เคอร์เซอร์ ctrl ซ้าย”
เปลี่ยนการกระทำที่ได้รับมอบหมายเป็น“ \ 033f” และ“ \ 033b” ตามลำดับและคุณจะสามารถใช้ctrl+ และctrl+ เพื่อย้ายโดยไม่สูญเสียคีย์ alt


2

ดูเหมือนว่าesc+ Bและesc+ Fจะถูกแมปตามค่าเริ่มต้นเพื่อไปที่จุดเริ่มต้นและจุดสิ้นสุดของคำ แม้ว่าสำหรับระบบของฉันคุณไม่สามารถกดค้างไว้escแต่ต้องกดอีกครั้งสำหรับแต่ละคำ


1
Esc ไม่เคยเป็นตัวดัดแปลง แต่จะเข้าสู่โหมด "Escape" เมื่อคุณกดพิจารณาว่าเป็นวิธีที่เป็นกิริยาช่วยในการทำสิ่งต่าง ๆ ซึ่งแตกต่างจาก shift / ctrl / meta เป็นต้น (ในรูปแบบ Readline ของสิ่งต่าง ๆ )
ocodo

0

ระบบปฏิบัติการเวอร์ชันล่าสุดจับคู่สิ่งนี้กับ Spaces แม้ว่าคุณจะปิด Spaces แล้วปุ่มลัดยังสามารถลัดวงจรได้ในตำแหน่งที่ซ่อนอยู่นี้:

ปุ่มเคอร์เซอร์ Terminal.app: ปิดการใช้งานการตั้งค่าระบบ -> ทางลัด -> การควบคุมภารกิจ -> เลื่อนไปทางซ้ายเว้นวรรค

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