Cách sao chép và dán bằng chuột với tmux


44

Tôi đang sử dụng tmuxvà OSX. Khi sao chép và dán từ thiết bị đầu cuối với tmuxtôi có thể giữ Optionvà chọn văn bản. Tuy nhiên tôi không thể có được văn bản để ở trong khung. Vì vậy, khi tôi muốn sao chép văn bản, tôi cần phải xoay vòng khung sang bên trái hoặc phóng to khung, như hiển thị bên dưới.

Điều này ngoài việc phải giữ Optionphím là một nỗi đau. Tôi biết tôi có thể vào chế độ trực quan và sử dụng các chuyển động vim để đến đó, nhưng tôi muốn có cách sử dụng chuột của mình. Có ai tìm thấy một cách giải quyết cho điều này?

nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây


"Tuy nhiên tôi không thể để văn bản ở trong khung." Bạn có ý nghĩa gì bởi điều này?
Blaszard

Câu trả lời:


36

Đặt khối mã này trong của bạn ~/.tmux.conf. Điều này sẽ cho phép tích hợp chuột cho phép bạn sao chép từ một khung bằng chuột mà không cần phải phóng to.

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"

Sau đó, khởi động lại phiên tmux của bạn. Làm nổi bật một số văn bản bằng chuột, nhưng đừng buông chuột. Bây giờ trong khi văn bản được tô sáng và nhấn chuột, nhấn phím quay lại. Văn bản được tô sáng sẽ biến mất và sẽ được sao chép vào clipboard của bạn. Bây giờ thả chuột.

Ngoài ra, còn có một số điều thú vị bạn có thể làm với chuột như cuộn lên xuống, chọn khung hoạt động, v.v.

Nếu bạn đang sử dụng phiên bản mới hơn của tmux trên macOS, hãy thử cách sau thay vì phiên bản trên:

# 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"

Nếu sử dụng iTerm trên macOS, goto iTerm2> Tùy chọn> tab General General, và trong phần Lựa chọn trực tiếp, hãy kiểm tra Ứng dụng trong thiết bị đầu cuối có thể truy cập clipboard.

Và nếu bạn đang sử dụng Linux và một phiên bản mới hơn của tmux, thì

# 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"

(Bạn cũng có thể xem https://github.com/gpakosz/.tmux để biết nhiều tùy chọn tmux khác.)


1
Cuối cùng một cái gì đó thực sự hoạt động! Sao chép và dán là điều khó chịu nhất khi thử tmux, tôi đã từ bỏ nó trước đó và các đoạn cấu hình tôi đang thử đã hành xử không nhất quán, cảm ơn rất nhiều người đàn ông.
Breno Salgado

1
Tôi đang sử dụng iterm trong mac và phải bật iTerm2> Tùy chọn> tab General General, và trong phần Lựa chọn của Wap, Ứng dụng trong thiết bị đầu cuối có thể truy cập clipboard. Tham khảo: rushiagr.com/blog/2016/06/16/ Mạnh
Rujoota Shah

@RujootaShah Vâng, điều đó đúng. Bạn cần phải làm điều đó. Cám ơn vì đã chia sẻ.
GMaster

1
Cảm ơn! Hoạt động như một lá bùa. Tôi cần phải cài đặt sudo apt-get install -y xclip(Ubuntu Linux).
Petr

hoạt động hoàn hảo, cảm ơn @GMaster
Luja Shrestha
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.