Mendapatkan kembali perilaku copy paste lama di tmux, dengan mouse


111

Inilah yang biasa saya lakukan di tmux untuk menyalin-tempel (menggunakan mouse, keyboard bekerja secara berbeda dan bukan itu yang saya minati):

  1. Pilih teks dengan mouse, tekan tombol kiri
  2. Tempel teks dengan tombol tengah

Saya telah mengupgrade OS saya, dan ini mendapatkan versi tmux baru. Saya belum mengubah .tmux.conffile konfigurasi saya .

Inilah yang harus saya lakukan dengan versi saat ini tmux, 1.6(yang sudah dikemas sebelumnya di linux crunchbang terbaru):

  1. Pilih teks dengan mouse, tekan tombol kiri dan shift tombol
  2. Tempel teks dengan tombol tengah
  3. Terminal diblokir, area informasi litte menunjukkan beberapa angka di kanan atas panel saat ini (yaitu [0/24], mungkin sesuatu yang berhubungan dengan berapa banyak karakter yang telah ditempel), yang berarti sedikit bagi saya dan saya tidak perlu / ingin (edit: itu sepertinya copy-modedimasukkan secara otomatis di sini)
  4. Saya harus menekan qtombol untuk mendapatkan terminal yang berfungsi lagi.

Ini terlalu merepotkan untuk sesuatu yang saya lakukan puluhan kali sehari. Bagaimana cara mengembalikan mekanisme lama?


2
di terminal saya st, Shift+ MouseMiddlemenempelkan Xselection seperti perilaku tradisional. FWIW, MouseMiddletanpa pengubah tidak melakukan apa-apa.
nabin-info

Jawaban:


84

Untuk memulihkan konfigurasi salin / tempel default Anda perlu (setidaknya untuk sementara) mematikan dukungan mouse di dalam tmux:

prefix : set -g mouse off

Di mana prefixkunci akses tmux ( Ctrl+ Bsecara default kecuali Anda memetakannya ulang). :memulai mode perintah dan set -gmenyetel parameter secara global.

Saat mode mouse dimatikan, fungsi salin / tempel standar yang disediakan oleh sistem operasi Anda berfungsi seperti yang diharapkan.

Hal lain yang mungkin ingin Anda lakukan adalah 'memaksimalkan' panel saat ini, sehingga Anda dapat menyalin banyak baris dengan mudah.


Jika Anda bekerja dengan tmux versi lama (sebelum 2.1), Anda perlu menggunakan yang berikut ini:

prefix : set -g mode-mouse off

Ada lebih banyak detail dan beberapa key binding yang berguna untuk mengotomatiskan semua ini di sini:

http://tangledhelix.com/blog/2012/07/16/tmux-and-mouse-mode/

Inti utama dari artikel yang ditautkan di atas adalah kutipan dari .tmux.conf ini:

# disable mouse control by default - change 'off' to 'on' to enable by default.
setw -g mode-mouse off
set-option -g mouse-resize-pane off
set-option -g mouse-select-pane off
set-option -g mouse-select-window off
# toggle mouse mode to allow mouse copy/paste
# set mouse on with prefix m
bind m \
    set -g mode-mouse on \;\
    set -g mouse-resize-pane on \;\
    set -g mouse-select-pane on \;\
    set -g mouse-select-window on \;\
    display 'Mouse: ON'
# set mouse off with prefix M
bind M \
    set -g mode-mouse off \;\
    set -g mouse-resize-pane off \;\
    set -g mouse-select-pane off \;\
    set -g mouse-select-window off \;\
    display 'Mouse: OFF'
# zoom this pane to full screen
bind + \
    new-window -d -n tmux-zoom 'clear && echo TMUX ZOOM && read' \;\
    swap-pane -s tmux-zoom.0 \;\
    select-window -t tmux-zoom
# restore this pane
bind - \
    last-window \;\
    swap-pane -s tmux-zoom.0 \;\
    kill-window -t tmux-zoom

13
Jika Anda memiliki tmux 1.8 atau yang lebih baru, ada perintah bawaan, Control-B z yang akan mengubah status yang diperbesar dari panel saat ini. Jadi CB z untuk memperbesar panel ini ke layar penuh, perintah yang sama lagi untuk mengembalikan. Ini menghilangkan kebutuhan untuk mendefinisikan urutan kunci CB + dan CB - pada akhir konfigurasi di atas.
dr-jan

9
Jika Anda memiliki tmux 2.1 atau yang lebih baru, semua perintah yang terkait dengan mouse telah dibuat usang, diganti dengan 'mouse' yang mengatur semuanya. Jadi, untuk menonaktifkan mode mouse secara default gunakan 'setw -g mouse off'. Hapus semua referensi ke 'mode-mouse', 'mouse-resize-pane', 'mouse-select-pane' atau 'mouse-select-window'.
dr-jan

50
Namun, mode mouse aktif memiliki manfaat: memungkinkan saya menggulir. Apakah ada kombinasi pengaturan yang memungkinkan saya menggunakan terminal saya seperti terminal sialan biasa? Salin / tempel dan gulir disertakan?
Mihai Danila

1
Apakah ada beberapa pengaturan lain yang mungkin saya ubah, karena aktif OSx (Sierra), optiontidak membantu. Memutar mode-mouse offmemungkinkan saya untuk memilih seperti biasa, tetapi kemudian saya tidak dapat menyalin ke clipboard ( cmd+Catau cmd+shift+Ctidak melakukan apa pun, atau membunyikan bel kesalahan, atau membuka pemilih warna)
dwanderson

3
Diuji dengan tmux v3, satu pengikatan untuk menghidupkan dan mematikannya:bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

248
  1. Salin teks: pilih teks dan tekan mouse left-buttondengan shifttombol tekan juga.
  2. Tempel teks dengan shiftkunci +middle-button

30
Untuk pengguna OSX itu adalah tombol pilihan, seperti yang dijelaskan dalam posting blog ini: awhan.wordpress.com/2012/04/18/tmux-copy-paste-with-mouse
pangratz

3
Faktanya, setelah memilih teks dengan Shift + LMB Anda dapat menggunakan fungsionalitas OS (Ctrl-Shift-C dalam kasus saya) untuk menyalin ke clipboard non-X11.
Eugene Pankov

8
OP dengan jelas menyatakan bahwa mereka ingin dapat menyalin dan menempel dengan mouse, tanpa menggunakan keyboard. Menekan Shift(atau tombol opsi pada OSX) adalah trik tertua dalam buku ini dan bekerja pada kebanyakan emulator, tetapi tidak menjawab pertanyaan awal.
Lqueryvg

1
@pangratz Menggunakan tombol opsi dapat bekerja untuk pengguna iTerm, tetapi tidak untuk pengguna Terminal asli.
anishpatel

Terima kasih untuk solusi ini! Ini masih kurang optimal - roda mouse = menggulir sejarah, dan semua fungsi mouse lainnya = normal akan jauh lebih baik.
Torsten Bronger

36

Jika "set -g mode-mouse on" Anda dapat melakukan trik ini:

Di Mac, tekan tombol "fn", lalu pilih teks dan salin dengan klik kanan mouse atau keyboard cmd + c.


4
bagi saya, ini sepertinya hanya berfungsi jika saya tidak menggulir dengan mouse. setelah saya menggulir dengan mouse, ini tidak lagi berfungsi
Paul

Anda juga dapat menempel dengan fn+Middle-Click
spinup

10

Dimodifikasi dari sini - saya gunakan xclipsebagai ganti xselaslinya:

bind -T root MouseDown2Pane run -b "xclip -o | tmux load-buffer - && tmux paste-buffer -s ' '"

Ini bekerja dengan gembira untuk saya tmux 2.5-rc2


ini berfungsi dengan baik di terminal, tetapi berperilaku aneh ketika saya mencoba menempelkannya di vim
Tropilio

9

Gunakan <prefix>+mmode toggle mouse on atau off

bind m run "if [[ `tmux show-option -w | grep mode-mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mode-mouse \$toggle &> /dev/null; for cmd in mouse-select-pane mouse-resize-pane mouse-select-window; do tmux set-option -g \$cmd \$toggle &> /dev/null; done;"

Ini bekerja dengan sempurna untuk saya. Terima kasih banyak. Saya ingin dapat menggulir dalam mode mouse, tetapi itu merusak kemampuan saya untuk menyalin teks. Ini memungkinkan peralihan cepat jika Anda ingin menonaktifkan mode mouse.
Bijan

6
Saya menggunakanbind m set-option mouse\; display-message "Mouse is now #{?mouse,on,off}"
Maxim Suslov

pengguna ingin dapat menyalin dan menempel, belum lagi kustomisasi .tmux.conf!
Jack Wasey

6

Saya mengalami masalah dalam mendapatkan teladan Christian untuk bekerja di Tmux 2, saya pikir ada kesalahan ketik. Saya mendapatkan yang di bawah ini untuk bekerja dan sedikit lebih mudah dibaca dan mengatur mode global dan jendela. hth seseorang. pengguna baru dan tmux hebat!

bind m run "\
    tmux show-options -g | grep -q "mouse\\s*on"; \
    if [ \$? = 0 ]; \
    then  \
        toggle=off;  \
    else  \
        toggle=on;  \
    fi;  \
    tmux display-message \"mouse is now: \$toggle\";  \
    tmux set-option -w mouse \$toggle; \
    tmux set-option -g mouse \$toggle; \
    "

1
Bekerja untuk saya. Diuji terhadap tmux HEAD dari github (seperti kemarin).
Lqueryvg

2
Untuk membuat ini berhasil, saya harus mengubah show-optionsjalur menjadi tmux show-options -g | grep -q "mouse\\s*on"; \ . Ini karena regex mouse.*oncocok @scroll-in-moused-over-pane "on"yang merupakan bagian dari plugin nhdaly / tmux-better-mouse-mode
Mandy Schoep

1
Pengikatan yang lebih sederhana yang pada dasarnya melakukan hal yang sama -bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'
Evgeny

6

Untuk pengguna Mac + iTerm2 + tmux (versi> 2.1) :

Pastikan mode mouse disetel dalam konfigurasi tmux (Cukup tambahkan set -g mode-mouse on~ / .tmux.conf). Sekarang, untuk menyalin teks di dalam panel:

  1. Tekan option + commanddan pilih teks yang ingin Anda salin menggunakan kursor mouse. Ini seperti memangkas foto.
  2. Teks yang dipilih akan disalin secara otomatis (tidak perlu command + c). Cukup tempel dengan cara biasa.

5

Yves Blusseau membantu saya mencari tahu cara kerjanya, tetapi di komputer saya (menjalankan Windows 10 ) perilakunya sedikit berbeda.

tmux 2.6

Dengan mouse aktif ( :set -g mouse on)

Menyalin

  1. Tahan Shiftdan pilih dengan mouse Anda teks yang ingin Anda salin
  2. Sekarang klik kanan untuk menyalin teks yang dipilih (tanpa menahan Shift)

Tempel

  1. Tahan Shiftdan klik kanan untuk memasukkan teks yang disalin

Sederhana seperti itu. Nikmati!


Terbaik. Sederhana dan elegan.
lemah

3

Ini adalah versi modifikasi dari jawaban Kaixuan yang kompatibel dengan Tmux 2.1.

`bind m run "if [[ `tmux show-options -w | grep mouse.*on` ]]; then toggle=off; else toggle=on; fi; tmux display-message \"mouse tmux: \$toggle\"; tmux set-option -w mouse \$toggle &> /dev/null;`"

Semua mode-mouseopsi telah digabungkan menjadi satu mouseopsi dan show-optionharus diganti denganshow-options


1
ini seharusnya ada di tmux.conf? ??
Arnold Roa

1
kemana perginya ini?
statquant

@ArnoldRoa @statquant: Ya, ini masuk ke dalam ~/.tmux.conffile. Ini mengikat <prefix>+mkunci untuk menjalankan skrip sebaris itu.
inblueswithu

0

di ~/.tmux.conf:

set -g mouse off

memiliki bind r source-file ~/.tmux.confmungkin berguna juga sehingga Anda dapat melakukannya ctrl-d runtuk memuat ulang konfigurasi misalnya.


0

Berdasarkan jawaban lain yang diposting di sini, saya telah membuat solusi ringkas yang berfungsi dengan (setidaknya) tmux 2.8 dan tmux 3.1 .

Anda dapat mengaktifkan tmux mouse supportdan menonaktifkan, dengan menekan prefix- M. Dalam .tmux.conffile tersebut, sertakan baris ini:

bind-key -T prefix m run "m=$(tmux show -g mou|grep -q on;echo $?);tmux set -g mou $m;tmux display mouse:\$m"

Ini akan ditampilkan mouse: 1saat diaktifkan dan mouse: 0saat dinonaktifkan. Menekan berulang kali prefix- Makan mengubah mode mouse antara hidup dan mati .

Lihat juga: dukungan mouse tmux

EDIT: Jika Anda melihat returned 1pesan kesalahan perintah, Anda harus menggunakan yang berikut ini sebagai gantinya untuk tmux 3.1 atau tmux 3.2 :

bind-key -T prefix m set -g mouse\; display 'Mouse: #{?mouse,ON,OFF}'

(solusi ini telah disebutkan sebelumnya)


-1

Saya menggunakan penjilidan berikut untuk memilih teks dengan menekan tombol kiri mouse -

bind -T copy-mode-vi MouseDragEnd1Pane send-keys -X copy-pipe-and-cancel "/mnt/c/Windows/System32/clip.exe"
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.