ผูกคำนำหน้า tmux ไปยังคีย์ OS X cmd (หรือการเชื่อมโยงอื่น ๆ )


21

ฉันคุ้นเคยกับ iTerm2 (หรือ Terminal.app สำหรับกรณีนี้) ใน OS X แต่ฉันต้องการย้ายไปใช้ tmux (หรือหน้าจอ แต่ปัญหาคล้ายกับแอพทั้งสอง)

ดังนั้นความคิดของฉันคือมีแท็บ iTerm เดียวที่มีเซสชั่น tmux เปิดขึ้นพร้อมกับหลายแท็บ ในการเปลี่ยนแปลงฉันมีคุณสมบัติพื้นฐานที่ฉันต้องกำหนดค่าบน tmux: เปลี่ยนแท็บ 'n' โดยใช้ cmd + n (เช่น Firefox, Chrome, iTerm2 เองเป็นต้น)

อย่างไรก็ตามฉันไม่พบวิธีการแมปปุ่ม cmd บนแป้นพิมพ์ mac ฉันแรกพยายามใช้ cmd เป็นคีย์คำนำหน้าไม่ประสบความสำเร็จ ฉันลองตั้งค่าแล้ว

set-option -g prefix M-a (hoping for Meta-a)

set-option -g prefix ^a (hoping for ^ to work)

แต่ไม่มีอะไรทำงาน เป็นไปได้ไหม ฉันไม่ต้องการผูกคำนำหน้าเป็น cmd จริงๆ แต่ฉันต้องการเปลี่ยนแท็บ tmux ด้วย cmd + n

ขอขอบคุณ


องค์ประกอบkarabiner
Fabrizio

คำตอบ:


8

คุณต้องการเรียกลำดับการกดแป้น (ก่อนCtrl-bจากนั้นnมีตั้งแต่ 0 ถึง 9)

ทางออกที่ดีที่สุดของคุณคือการใช้ยูทิลิตี้แป้นพิมพ์ลัดเช่นButlerหรือKeyboard Maestroเพื่อทำสิ่งนี้ให้คุณ


ใช้บัตเลอร์ :

เลือก+ »สมาร์ทรายการ»การกดแป้นพิมพ์กำหนดค่าฮอต Cmd-1กดCtrl-Bแล้ว1สำหรับการกดแป้นพิมพ์ กำหนดค่าให้ใช้ได้เฉพาะในเทอร์มินัล (หรือ iTerm) มันจะเตือนคุณว่าแอปพลิเคชันอื่นอาจไม่ชอบ แต่คุณรู้แล้วว่า


ใช้คีย์บอร์ดมาสโทร :

สร้างกลุ่มใหม่ทางด้านซ้ายที่มีเฉพาะในเทอร์มินัล (หรือ iTerm)

เพิ่มรายการใหม่เรียกโดยHot Key ทริกเกอร์ ( Cmd-1) และเพิ่มสองการกดแป้นพิมพ์กับการกระทำของมันและCtrl-B1


คุณอาจต้องการที่จะดูหัวข้อนี้ - ไม่ได้ใช้Commandและไม่ได้ผลสำหรับฉันโดยใช้ Terminal


จากเอกสารคู่มือtmux :

ผูกคีย์คีย์เพื่อคำสั่ง อาจระบุคีย์นำหน้าด้วย 'C-' หรือ 'ˆ' สำหรับปุ่ม ctrl หรือ 'M-' สำหรับคีย์ alt (meta) ธง indicatesr ระบุว่าปุ่มนี้อาจทำซ้ำดูตัวเลือกเวลาทำซ้ำ

พวกเขาไม่สนับสนุนคีย์ตัวปรับแต่งที่สาม


แฮ็กน่ากลัวจริงๆ! มันก็ทำงานเช่นกัน! ใช้ Keyboard Maestro เพราะบัตเลอร์ดูเหมือนว่าจะเกินกำลัง ขอขอบคุณ!
rubenfonseca

Keyboard Maestro ทำงานได้อย่างมหัศจรรย์สำหรับสิ่งนี้
Sam Selikoff

19

ใน iTerm2 คุณสามารถแมปทางลัดกับรหัสฐานสิบหกที่ส่งไปยังเทอร์มินัล ไปที่การตั้งค่า iTerm2 -> กุญแจ ใน Global Shortcut Keys คลิก + และเพิ่มประเภททางลัดที่คุณต้องการเช่น cmd + 1 ซึ่งจะถูกจับ จากนั้นเลือก "ส่งรหัส Hex" ในกล่องที่ปรากฏขึ้นให้พิมพ์รหัสฐานสิบหกที่คุณต้องการส่งไปยัง tmux คั่นด้วยช่องว่าง Ctrl-B คือ 0x02 ดังนั้นสำหรับ "Ctrl-B 1" ให้พิมพ์ "0x02 0x31" ดูรหัส hex เพิ่มเติมได้ที่นี่: http://www.nthelp.com/ascii.htm

ฉันแมป Cmd กับ h, j, k, l สำหรับการเลื่อนไปมาระหว่างบานหน้าต่าง tmux และ Cmd ด้วย% และ "สำหรับการสร้าง splits ฉันอาจทำสิ่งที่คล้ายกันเพื่อย้ายระหว่าง vim splits กับปุ่มควบคุมหนึ่งปุ่ม


นี่เป็นคำตอบที่ดีที่สุดสำหรับผู้ที่ใช้ iTerm2 ขอบคุณ!
newUserName ตอนนี้

1
ด้วยเหตุผลบางอย่างนี่ไม่ทำงานกับ iTerm2 build 3.0.2 ของฉัน
jasonszhao

หากสิ่งนี้ไม่ทำงานอาจเป็นเพราะ iTerm2 ผูกคีย์ cmd เป็น switch-tab โดยค่าเริ่มต้น ตัวดัดแปลงของคุณอาจปะทะกัน ฉันต้องเปลี่ยนคีย์แท็บคุณภาพชั้นหนึ่งเป็นตัวเลือกเพื่อให้สิ่งนี้ทำงานบน CMD + n
Surfrdan

2

ทางลัดพิเศษสามารถทำได้ด้วย Terminal.app ฉันเพิ่งค้นพบเมื่อวันก่อน แต่นี่อาจเป็นไปได้ก่อนสิงโต

ไปที่การตั้งค่า> การตั้งค่าและคลิกที่แท็บ "คีย์บอร์ด" ตอนนี้คุณต้องเพิ่มแป้นพิมพ์ลัดใหม่โดยคลิกที่ไอคอนเครื่องหมายบวกด้านล่างช่อง ตอนนี้คุณต้องการตั้งค่าคีย์ผสมที่ "ส่งสตริงไปยังเชลล์"

ตัวอย่าง: สมมุติว่าฉันต้องการตั้งค่า M-LeftArrow ให้แมปกับprefix-p(หน้าต่างก่อนหน้า)

Key: Left Arrow 
Modifier: Option 
Action: send string to shell

ตอนนี้เพียงแค่พิมพ์prefix-pลงในกล่องอินพุตซึ่งprefixเป็นสิ่งที่คุณได้ตั้งค่าไว้สำหรับ tmux (ฉันใช้ cntrl-a เพื่อให้กล่องแสดง\001p) โปรดทราบว่าหากคุณทำผิดพลาดการลบตัวอักษรจะถูกแทรกแทนการลบตัวอักษรจริง ๆ ดังนั้นกดปุ่ม "ลบหนึ่งตัวอักษร" เพื่อเลื่อนไปด้านหลังในกรณีที่คุณเลอะ

ตัวละครพิเศษที่ฉันตั้งไว้เพื่อทำให้ชีวิตง่ายขึ้น:

M-Left  > Previous Window
M-Right > Next Window
M-Up    > Enter scrolling mode
M-Down  > Next Pane

คุณสามารถปรับเปลี่ยน cntrl-Anything และ shift-Anything ได้ แต่อย่าลืมว่าสิ่งเหล่านี้อาจรบกวน $ EDITOR ของคุณหรือโปรแกรมอื่น ๆ ดังนั้นโปรดระมัดระวังเกี่ยวกับฟังก์ชั่นพิเศษที่อาจทำให้ไร้ประโยชน์

นอกจากนี้โปรดทราบว่าฉันไม่สามารถหาวิธีการทำซ้ำฟังก์ชั่นนี้ใน iTerm2


1

คุณอาจต้องการพิจารณาการรวมดั้งเดิม (แต่ทดลองมาก) ที่ iTerm2 นำเสนอด้วย tmux: http://code.google.com/p/iterm2/wiki/TmuxIntegration

ด้วยวิธีนี้เมื่อคุณกด Cmd-D เพื่อแยกหน้าจอ iTerm2 จะแบ่งแท็บให้คุณ สิ่งนี้ยอดเยี่ยมเพราะการแยกเป็นแบบเนทีฟคุณจึงสามารถลากขอบตรงกลางเพื่อปรับความกว้างได้อีกครั้งหรือคุณสามารถเลือกบานหน้าต่างได้โดยคลิกที่ เหมือนกันสำหรับแท็บ / หน้าต่างใหม่ (แต่ทางลัดแตกต่างกันเล็กน้อย - ไม่เช่นนั้นคุณไม่มีวิธีเพิ่มแท็บที่ไม่ใช่ tmux)

และเช่นเดียวกับ tmux หากคุณแยกออกและเชื่อมต่อใหม่ทุกอย่างจะถูกบันทึกไว้สำหรับคุณ

แม้ว่าจะมีข้อแม้อยู่สองประการ: * นี่เป็นคุณสมบัติทดลองและไม่สม่ำเสมอสำหรับฉัน * คุณจะต้องสร้าง tmux ด้วยตัวคุณเอง (โดยใช้ไฟล์เก็บถาวรบนลิงก์ด้านบน)

คริส


ฉันรู้ว่าเป็นเวลาสองปีแล้ว แต่มีความคิดใด ๆ ถ้าสิ่งนี้ยังทำงานอยู่ ฉันทำตามคำแนะนำที่ลิงก์ของคุณ แต่cmd+Dแยกบานหน้าต่างของ iTerm2 ไม่ใช่ tmux
Sam Selikoff

1
@SamSelikoff tmux -CCคุณต้องเริ่มต้นด้วย
jasonszhao

0

คุณอาจดูโพสต์บล็อกนี้ที่มีคำอธิบายโดยละเอียดเกี่ยวกับการรวม tmux / iterm: http://tangledhelix.com/blog/2012/04/28/iterm2-keymaps-for-tmux/


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