Cara menyalin dan menempel dengan mouse dengan tmux

44

Saya menggunakan tmuxdan OSX. Saat menyalin dan menempel dari terminal dengan tmuxsaya dapat menahan Optiondan memilih teks. Namun saya tidak bisa mendapatkan teks untuk tetap berada di dalam panel. Jadi ketika saya ingin menyalin teks saya juga perlu untuk siklus panel ke paling kiri, atau memperbesar panel, seperti yang ditunjukkan di bawah ini.

Ini selain harus menahan Optionkunci adalah sakit. Saya tahu saya bisa masuk ke mode visual dan menggunakan gerakan vim untuk sampai ke sana, tetapi saya lebih suka memiliki cara untuk menggunakan mouse saya. Adakah yang menemukan solusi untuk ini?

masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

mbigras
sumber
"Namun saya tidak bisa mendapatkan teks untuk tetap berada di dalam panel." Apa yang Anda maksud dengan ini?
Blaszard

Jawaban:

36

Masukkan blok kode ini ke dalam ~/.tmux.conf. Ini akan memungkinkan integrasi mouse yang memungkinkan Anda menyalin dari panel dengan mouse Anda tanpa harus memperbesar.

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"

Setelah itu, mulai kembali sesi tmux Anda. Sorot beberapa teks dengan mouse, tetapi jangan lepaskan mouse. Sekarang sementara teks masih disorot dan mouse ditekan, tekan tombol kembali. Teks yang disorot akan hilang dan akan disalin ke clipboard Anda. Sekarang lepaskan mouse.

Terlepas dari ini, ada juga beberapa hal keren yang dapat Anda lakukan dengan mouse seperti gulir ke atas dan ke bawah, pilih panel aktif, dll.

Jika Anda menggunakan versi tmux yang lebih baru di macOS, coba yang berikut ini daripada yang di atas:

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

Jika menggunakan iTerm di macOS, goto iTerm2> Preferences> tab "General", dan di bagian "Selection", centang "Aplikasi di terminal dapat mengakses clipboard".

Dan jika Anda menggunakan Linux dan versi yang lebih baru dari tmux, maka

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

(Anda juga dapat melihat https://github.com/gpakosz/.tmux untuk banyak opsi tmux lainnya.)

GMaster
sumber
1
Akhirnya sesuatu yang benar-benar berfungsi! Menyalin dan menempel adalah satu-satunya hal yang paling menyebalkan dengan mencoba tmux, saya sudah menyerah sebelumnya dan cuplikan konfigurasi yang saya coba tidak berperilaku tidak konsisten, terima kasih banyak.
Breno Salgado
1
Saya menggunakan iterm di mac dan harus mengaktifkan iTerm2> Preferences> tab "General", dan di bagian "Selection", "Aplikasi di terminal dapat mengakses clipboard". Referensi: rushiagr.com/blog/2016/06/16/...
Rujoota Shah
@RujootaShah Ya, itu benar. Anda perlu melakukan itu. Terima kasih telah berbagi.
GMaster
1
Terima kasih! Bekerja seperti pesona. Saya perlu menginstal sudo apt-get install -y xclip(Ubuntu Linux).
Petr
berfungsi dengan baik, terima kasih @ GMaster
Luja Shrestha