ทางลัดคัดลอก (ไปยัง X คลิปบอร์ด) ใน. tmux.conf


22

เพื่อคัดลอกข้อความไปยังคลิปบอร์ด X ใน tmux สิ่งที่ฉันทำในปัจจุบันคือ:

  • ไปโหมดการเลือกด้วย prefix[
  • เริ่มต้นการเลือกด้วยspace(โดยใช้mode-keys vibtw)
  • เลือกข้อความและกด enter
  • คัดลอกบัฟเฟอร์ tmux ไปที่ X คลิปบอร์ดโดยใช้ prefixctrl+c

(ฉันมีแผนที่เป็น bind C-c run "tmux show-buffer | xclip -selection clipboard -i"

ฉันพยายามกำจัดขั้นตอนเหล่านี้ด้วยการทำแผนที่สำหรับโหมดการเลือก ฉันเหนื่อย:

bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"

ซึ่งให้ฉันและข้อผิดพลาด:

.. usage: bind-key [-cnr] [-t key-table] key command [arguments]

(ฉันไม่สามารถคัดลอกข้อผิดพลาด)

ฉันจะแก้ไขสิ่งนี้ได้อย่างไร

แก้ไข:ฉันรู้ว่าฉันสามารถเลือกและคัดลอกไปยัง tmux buffer (3 ขั้นตอนแรก) โดยใช้เมาส์เหมือนกับการเลือกทั่วไป (แม้ว่าการไฮไลต์จะไม่คงอยู่ แต่ก็ยังเลือกข้อความ) จากนั้นใช้การผูกดังต่อไปนี้เพื่อคัดลอกไปยังคลิปบอร์ด x :

bind-key -n C-c run "tmux show-buffer | xclip -selection clipboard -i"

(ฉันใช้วิธีนี้เพื่อคัดลอกข้อความนี้และมันง่าย;)

โปรดทราบว่า-nหมายถึง "ไม่มีคำนำหน้า" ดังนั้นจึงไม่จำเป็นต้องหลบหนี หากคุณไม่สับสนกับการไฮไลต์ที่หายไปการทำสำเนานี้คล้ายกับการคัดลอกปกติ (ส่วนต่อประสานผู้ใช้ทั่วไป)

นี่คือสิ่งที่ดีที่สุดที่ฉันเคยพบมา ..

EDIT2:กลายเป็นctrl+cทับซ้อนกับสิ่งที่ขัดจังหวะกระบวนการดังนั้นฉันเปลี่ยนเป็นctrl+alt+cตอนนี้ (ไม่ค่อยชอบเท่าไหร่)

EDIT3: tmux 1.8 หรือเพิ่มการสนับสนุนเพื่อเพิ่มการโยงคีย์ในโหมดการคัดลอกดังนั้นตอนนี้ความตั้งใจดั้งเดิมครั้งแรกของฉันก็เป็นไปได้โดยใช้บางสิ่งเช่น:

bind-key -tvi-copy y copy-pipe "xclip -selection clipboard -i"
bind-key -tvi-copy enter copy-pipe "xclip -selection clipboard -i"

การเชื่อมทั้งสองนี้ทำให้สามารถคัดลอกข้อความไปยังคลิปบอร์ดเมื่อฉันใช้enterหรือyทำการคัดลอกจนเสร็จ

ฉันยังคงบรรทัดนี้ในกรณีที่ฉันคัดลอกด้วยเมาส์และตัดสินใจที่จะได้รับเนื้อหาบัฟเฟอร์ tmux ไปยังคลิปบอร์ดในภายหลัง:

bind-key y run "tmux show-buffer | xclip -selection clipboard -i"

1
คุณสามารถเปลี่ยนการขัดจังหวะจาก ctrl-c เป็นอย่างอื่นโดยใช้ stty ตัวอย่างเช่นการใช้ stty intr=^ZCtrl-Z: ระวังด้วยคำสั่งนั้นเป็นไปได้ที่จะตั้งค่าอักขระปกติให้เป็นอักขระขัดจังหวะ (ถ้าคุณทำเช่นนั้นใช้ ctrl-v เพื่อป้อนมันจนกว่าจะแก้ไขการตั้งค่า) และอย่าสับสนกับคีย์ที่ใช้ (เช่น ctrl-z โดยปกติคือคีย์ suspend)
เถ้า

@ash จดบันทึกลงขอบคุณ .. แต่ฉันคิดว่าฉันจะเก็บ^cเป็นคีย์ขัดจังหวะขณะที่ฉันใช้บ่อยกว่าการคัดลอก ฉันได้อัปเดตคำตอบเพื่อแสดงวิธีแก้ไขปัญหาปัจจุบันของฉันด้วย
ไม่มี

ฟังดูเข้าท่า. โปรดทราบว่าการทำงานของ xmodmap จำนวนมากสามารถทำให้สิ่งต่าง ๆ อยู่ในสถานะตลกที่ยากต่อการแก้ไขดังนั้นฉันขอแนะนำให้เริ่มต้นใหม่ด้วยเซสชัน X ใหม่หากผลกระทบของคำสั่งปรากฏไม่ถูกต้อง
เถ้า

การbind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"แสดงสดให้:Unknown command: run
Alexej Magura

1
อย่างไรก็ตามการทำงานได้bind-key C-c run "tmux show-buffer | xclip -selection clipboard -i"ผลดี
Alexej Magura

คำตอบ:


13

คำตอบนี้ไม่ได้ตอบคำถามของคุณโดยตรงเกี่ยวกับการสร้างทางลัด แต่นี่คือสิ่งที่ฉันทำ

คุณสามารถระงับการส่งผ่านเหตุการณ์กุญแจ / เมาส์ของคุณไปยัง tmux shiftชั่วคราวได้ ดังนั้นคุณสามารถกด Shift และปุ่มทางลัดปกติของผู้ใช้ terminal / X เพื่อทำสำเนา ในกรณีของฉันโดยใช้ Terminator ฉันกดshiftเน้นด้วยเมาส์ตามที่ฉันต้องการคัดลอกด้วยCtrl+Shift+C

และในกรณีที่คุณมีบานหน้าต่างแยกคุณสามารถซูมบานหน้าต่างปัจจุบันด้วยปุ่มย่อ / ขยายสลับPrefix + zและดำเนินการคัดลอก (ทดสอบกับ tmux v1.8)


ฉันไม่สามารถใช้สิ่งนี้ได้เนื่องจากการแยกในแนวนอน แต่เคล็ดลับการซูมฟังดูดีมาก
ไม่มี

มันใช้งานได้ใน gnome-terminal แน่นอน แต่มันใช้ได้กับเทอร์มินัลอีมูเลเตอร์ทั้งหมดหรือไม่? อาจไม่
jpaugh

ใน wsl-terminal สิ่งนี้ใช้ได้ผล บันทึกประจำวันของฉัน!
Qinsi

1

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

prefix + y - คัดลอกข้อความจากบรรทัดคำสั่งไปยังคลิปบอร์ด

การผูกโหมดการคัดลอก:

y - คัดลอกส่วนที่เลือกไปยังคลิปบอร์ดของระบบ

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