ฉันจะทำให้⌘←และ⌘→ทำงานได้ที่บ้าน / ปลายคอมโบสำหรับเทอร์มินัลได้อย่างไร


21

ทำไมfn- - (หรือคนอื่น ๆ ) ทำที่บ้าน / สิ้นสุดใน Terminal แต่ a - ทำงานได้ทุกที่อื่น?

ดังนั้นเพื่อให้ชัดเจนคำถามคือวิธีทำให้ Terminal ใช้Command+ และสำหรับบ้านและที่สิ้นสุด

คำตอบ:


21

เทอร์มินัลไม่สามารถมอบฟังก์ชันการทำงานที่คุณต้องการได้อย่างสะดวกสบายอย่างที่มันเป็น

เหตุผลก็คือโปรแกรมที่ทำงานภายใน Terminal มีกฎที่แตกต่างกันสำหรับการย้ายเคอร์เซอร์ไปที่จุดเริ่มต้น / สิ้นสุดของบรรทัดตัวอย่างเช่น

  • bash(และกระสุนอื่น ๆ ) ใช้CtrlAและCtrlE
  • viใช้0และ$/Shift4

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

แน่นอนเทอร์มินัลสามารถรักษารายการชุดคีย์สำหรับโปรแกรมทั่วไปจำนวนหนึ่งตรวจสอบสิ่งที่กำลังทำงานและส่งคีย์ที่ถูกต้องให้คุณหรืออาจให้รายการเมนูเช่นย้ายเคอร์เซอร์ไปที่จุดเริ่มต้นของเชลล์ด้านใน⌘←แล้วส่งCtrlAเบื้องหลัง. แต่ฉันคิดว่าวิศวกรของ Apple คิดว่าถ้าคุณลงทุนในดินแดนCLIคุณจะรู้ว่ามันเป็นอย่างไร

เทอร์มินัลจัดเตรียมOptionและOptionทำงานbashตามที่คาดไว้และเลื่อนเคอร์เซอร์ไปที่ตำแหน่งเริ่มต้นของคำก่อนหน้า / ถัดไป นั่นเป็นเพราะการผสมคีย์เหล่านี้ถูกแมปEscbและEscb(ดูman bashส่วน "คำสั่งสำหรับการย้าย" สำหรับข้อมูลเพิ่มเติม) ในviตัวอย่างเฉพาะงานหลัง (ชนิด) ทำงาน (ท้ายคำตอบนี้ฉันจะแสดงวิธีกำหนดค่าviให้ทำงานกับOptionและOption)

แต่ต้องขอบคุณอัตโนมัติ, AppleScript และชื่อแทนทุบตีคุณจะได้รับและการทำงานกับbash(และอาจจะเปลือกหอยอื่น ๆ ) viและ

ขั้นตอนแรกคือการทำแผนที่และการและCtrlA CtrlEในขั้นตอนที่สองฉันจะแสดงวิธีกำหนดค่าviเพื่อเป็นเกียรติCtrlAและCtrlE(ซึ่งจะทำให้viเข้ากันได้กับและ)

แผนที่และไปยังCtrlAและCtrlE

  1. ในเทอร์มินัลไปที่การตั้งค่า ... > การตั้งค่า> [โปรไฟล์ที่ใช้งานอยู่ของคุณ]> คีย์บอร์ด: ป้อนคำอธิบายรูปภาพที่นี่

  2. กด+เลือก "เคอร์เซอร์ซ้าย", "Control-Shift" เป็นตัวดัดแปลงและการกระทำ "ส่งข้อความ:" จากนั้นกดCtrlA( \001จะปรากฏในช่องข้อความ) และยืนยันด้วยOK: ป้อนคำอธิบายรูปภาพที่นี่

    (ในคำตอบก่อนหน้านี้ฉันใช้คำว่า "Shift" เป็นตัวดัดแปลงฉันสังเกตเห็นว่าการตั้งค่านี้ขัดแย้งกับshiftซึ่งแสดงแท็บ Terminal ก่อนหน้านี้หากคุณไม่ปล่อยมือทันทีโดยใช้ "Control-Shift" แก้ไขที่.)

  3. ตอนนี้เพิ่มคีย์ผสมสำหรับ "เคอร์เซอร์ขวา" แต่กดCtrlE( \005จะปรากฏในช่องข้อความ) OKยืนยันด้วย

  4. เปิด Automator (เช่นกดspaceเพื่อเปิด Spotlight และพิมพ์Automator ) เลือกไฟล์> ใหม่แล้วเลือกService:

    ป้อนคำอธิบายรูปภาพที่นี่

  5. ลากRun AppleScriptไปที่บานหน้าต่างด้านขวา: ป้อนคำอธิบายรูปภาพที่นี่

  6. พิมพ์สคริปต์ต่อไปนี้:

    on run {input, parameters}
        tell application "System Events"
            tell application process "Terminal"
                key code 123 using {shift down, control down}
            end tell
        end tell
    end run

    และบันทึกเป็นMove Cursor to Beginning of Line:

    ป้อนคำอธิบายรูปภาพที่นี่

  7. ทำซ้ำขั้นตอนที่ 4. ถึง 6 ด้วยสคริปต์นี้:

    on run {input, parameters}
        tell application "System Events"
            tell application process "Terminal"
                key code 124 using {shift down, control down}
            end tell
        end tell
    end run

    และบันทึกเป็นMove Cursor to End of Line:

    ป้อนคำอธิบายรูปภาพที่นี่

  8. นี่คือสิ่งที่เทอร์มินัล> บริการดูเหมือนตอนนี้:

    ป้อนคำอธิบายรูปภาพที่นี่

กำหนดค่าviให้เกียรติCtrlAและCtrlE

  1. เปิด.bashrcด้วยโปรแกรมแก้ไขที่คุณชื่นชอบและเพิ่มบรรทัดนี้:

    alias vi='vim -c "map <C-A> 0" -c "map <C-E> $" -c "map <Esc>b B" -c "map <Esc>f E"'

    mapคำสั่งสองคำสั่งแรกบอกvimให้ตีความControlEและControlAเป็น$และ0ซึ่งเลื่อนเคอร์เซอร์ไปที่จุดเริ่มต้นหรือจุดสิ้นสุดของบรรทัดตามลำดับ

    สุดท้ายทั้งสองmapคำสั่งบอกvimจะย้ายหนึ่งคำเคอร์เซอร์ในเวลาที่คุณจะคาดหวังว่าเมื่อมีการกดและoptionOption

คำเตือน

คุณจะสังเกตเห็นว่ามีความล่าช้าเล็กน้อยระหว่างช่วงเวลาที่คุณกดหรือช่วงเวลาที่เคอร์เซอร์เคลื่อนไหว

โปรดทราบว่าจะใช้งานได้เฉพาะกับโปรแกรมที่ให้เกียรติCtrlA/ CtrlEดังนั้นคุณอาจต้องการเรียนรู้การผสมผสานคีย์เฉพาะของแต่ละโปรแกรมที่คุณใช้ใน Terminal

(ทดสอบบน macOS Sierra 10.12.4)


3
ขอบคุณสำหรับคำตอบอย่างละเอียดมีคำร้องให้ Apple รวมปุ่ม home / end ไว้ที่การออกแบบใหม่ครั้งต่อไป :-)
Jackie

ฉันดีใจที่ฉันสามารถช่วย
jaume

ว้าว .. ทั้งหมดนี้เพื่อให้ได้ทางลัดที่เลว
ร้าย

นี่เป็นคำตอบที่ดี แต่สามารถปรับปรุงได้โดยการยกเว้นข้อมูลที่ไม่เกี่ยวข้องทั้งหมดviซึ่งเป็นแอปพลิเคชั่นที่แตกต่างจากเทอร์มินัลโดยสิ้นเชิง
axiopisty

1
นั่นเป็นเคล็ดลับที่ยอดเยี่ยม ฉันจัดการเพื่อให้ AppleScript ทำงานโดยการส่งรหัสคีย์สำหรับ "Home" และ "End": "key code 115" และ "key code 119" "
Keymon

2

แน่นอนมันเป็นไปได้

ก่อนอื่นคุณสามารถใช้เครื่องมือฟรี "DoubleCommand" หากคุณมีแป้นพิมพ์ windows พร้อมปุ่ม HOME / END เพื่อให้ทำงานได้อย่างที่ควรจะเป็น (เริ่มต้น / สิ้นสุดบรรทัด)

ประการที่สองสำหรับเทอร์มินัลโดยเฉพาะไปที่การตั้งค่าแป้นพิมพ์แก้ไขไอคอน / แป้นซึ่งดูเหมือนลูกศรชี้ขึ้นไปทางซ้ายเลือก "ส่งข้อความ" และพิมพ์ ctrl + a ทำ!

เช่นเดียวกับปุ่มวางสาย ..

หากคุณไม่มีแป้นพิมพ์พีซีคุณสามารถทำเช่นเดียวกันกับคีย์ผสมอื่น ๆ

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