วิธีคัดลอกและวางด้วยเมาส์ด้วย tmux


44

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

สิ่งนี้นอกจากจะต้องกดOptionปุ่มค้างไว้เป็นอาการปวดแล้ว ฉันรู้ว่าฉันสามารถเข้าสู่โหมดภาพและใช้การเคลื่อนไหวที่เป็นกลุ่มเพื่อไปที่นั่น แต่ฉันอยากจะมีวิธีใช้เมาส์ของฉัน มีใครพบวิธีแก้ปัญหาสำหรับเรื่องนี้?

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


"อย่างไรก็ตามฉันไม่สามารถรับข้อความให้อยู่ในบานหน้าต่าง" คุณหมายถึงอะไร?
Blaszard

คำตอบ:


36

~/.tmux.confใส่บล็อกของรหัสนี้ไว้ใน นี่จะเป็นการเปิดใช้งานการรวมเมาส์ให้คุณคัดลอกจากบานหน้าต่างด้วยเมาส์โดยไม่ต้องซูม

set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -t vi-copy    C-WheelUpPane   halfpage-up
bind -t vi-copy    C-WheelDownPane halfpage-down
bind -t emacs-copy C-WheelUpPane   halfpage-up
bind -t emacs-copy C-WheelDownPane halfpage-down

# To copy, drag to highlight text in yellow, press Enter and then release mouse
# Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -t vi-copy Enter
bind-key -t vi-copy Enter copy-pipe "pbcopy"

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

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

หากคุณกำลังใช้tmux เวอร์ชันที่ใหม่กว่าบน macOS ลองทำสิ่งต่อไปนี้แทนที่จะเป็นหนึ่งในด้านบน:

# macOS only
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -T copy-mode-vi    C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-vi    C-WheelDownPane send-keys -X halfpage-down
bind -T copy-mode-emacs C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-emacs C-WheelDownPane send-keys -X halfpage-down

# To copy, left click and drag to highlight text in yellow, 
# once you release left click yellow text will disappear and will automatically be available in clibboard
# # Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "pbcopy"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "pbcopy"

หากใช้ iTerm บน macOS ให้ไปที่ iTerm2> การตั้งค่า> แท็บ“ ทั่วไป” และในส่วน“ การเลือก” ให้เลือก“ แอปพลิเคชันในเทอร์มินัลอาจเข้าถึงคลิปบอร์ด”

และถ้าคุณใช้Linuxและ tmux เวอร์ชั่นใหม่กว่า

# Linux only
set -g mouse on
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'select-pane -t=; copy-mode -e; send-keys -M'"
bind -n WheelDownPane select-pane -t= \; send-keys -M
bind -n C-WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -T copy-mode-vi    C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-vi    C-WheelDownPane send-keys -X halfpage-down
bind -T copy-mode-emacs C-WheelUpPane   send-keys -X halfpage-up
bind -T copy-mode-emacs C-WheelDownPane send-keys -X halfpage-down

# To copy, left click and drag to highlight text in yellow, 
# once you release left click yellow text will disappear and will automatically be available in clibboard
# # Use vim keybindings in copy mode
setw -g mode-keys vi
# Update default binding of `Enter` to also use copy-pipe
unbind -T copy-mode-vi Enter
bind-key -T copy-mode-vi Enter send-keys -X copy-pipe-and-cancel "xclip -selection c"
bind-key -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "xclip -in -selection clipboard"

(คุณสามารถตรวจสอบhttps://github.com/gpakosz/.tmuxสำหรับตัวเลือก tmux อื่น ๆ อีกมากมาย)


1
ในที่สุดสิ่งที่ใช้งานได้จริง! การคัดลอกและวางเป็นสิ่งเดียวที่น่ารำคาญที่สุดเมื่อลองใช้ tmux ฉันเคยยอมแพ้ก่อนหน้านี้และตัวอย่างข้อมูลที่ฉันพยายามออกมามีพฤติกรรมที่ไม่สอดคล้องกันขอบคุณคนมาก
Breno Salgado

1
ฉันใช้ iterm ใน mac และต้องเปิดใช้งาน iTerm2> การตั้งค่า> แท็บ“ ทั่วไป” และในส่วน“ การเลือก”“ แอปพลิเคชันในเทอร์มินัลอาจเข้าถึงคลิปบอร์ด” การอ้างอิง: rushiagr.com/blog/2016/06/16/…
Rujoota Shah

@RujootaShah ใช่ถูกต้องแล้ว คุณต้องทำอย่างนั้น ขอบคุณสำหรับการแบ่งปัน.
GMaster

1
ขอบคุณ! ทำงานเหมือนจับใจ ฉันจำเป็นต้องติดตั้งsudo apt-get install -y xclip(Ubuntu Linux)
Petr

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