salin pintasan (ke papan klip X) di .tmux.conf

22

Untuk menyalin teks ke X clipboard di tmux, yang saat ini saya lakukan adalah:

  • pergi mode pemilihan dengan prefix[
  • mulai seleksi dengan space(menggunakan mode-keys vibtw)
  • pilih teks dan tekan enter
  • salin tmux buffer ke X clipboard menggunakan prefixctrl+c

(Saya memiliki pemetaan sebagai bind C-c run "tmux show-buffer | xclip -selection clipboard -i"

Saya mencoba menghilangkan beberapa langkah ini dengan membuat pemetaan untuk mode pemilihan. Saya telah mencoba:

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

yang memberi saya dan kesalahan:

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

(Saya tidak bisa menyalin kesalahan)

bagaimana saya bisa memperbaikinya?

EDIT: Saya menyadari saya dapat memilih dan menyalin ke buffer tmux (3 langkah pertama) menggunakan mouse seperti pilihan biasa (meskipun penyorotan tidak berlangsung lama, ia masih memilih teks) dan kemudian menggunakan bind berikut untuk menyalin ke x clipboard :

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

(Saya menggunakan metode ini untuk menyalin teks ini dan itu mudah;)

perhatikan yang -nmenunjukkan "tidak ada awalan" oleh karena itu tidak diperlukan pelolosan. jika Anda tidak bingung dengan highlight yang hilang, ini analog dengan penyalinan biasa (antarmuka pengguna umum).

ini adalah yang terbaik yang saya buat sejauh ini ..

EDIT2: ternyata ctrl+ctumpang tindih dengan hal proses interupsi jadi saya berubah menjadi ctrl+alt+cuntuk saat ini. (tidak begitu suka)

EDIT3 : tmux 1.8 atau lebih menambahkan dukungan untuk menambahkan keybindings dalam mode salin jadi sekarang niat asli pertama saya mungkin menggunakan sesuatu seperti:

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

Kedua binding ini memungkinkan untuk menyalin teks ke clipboard ketika saya menggunakan enteratau yuntuk menyelesaikan penyalinan.

Saya masih mempertahankan baris ini jika saya melakukan penyalinan dengan mouse dan memutuskan untuk mendapatkan konten buffer tmux ke clipboard nanti:

bind-key y run "tmux show-buffer | xclip -selection clipboard -i"
tidak ada
sumber
1
Anda dapat mengubah interupsi dari ctrl-c ke sesuatu yang lain menggunakan stty. Misalnya, untuk menggunakan Ctrl-Z: stty intr=^Z. Hati-hati dengan perintah itu, mungkin untuk mengatur karakter reguler menjadi karakter interrupt (jika Anda melakukannya, gunakan ctrl-v untuk memasukkannya sampai memperbaiki pengaturan). Dan jangan bingung pada kunci apa yang digunakan (mis. Ctrl-z biasanya adalah kunci penangguhan).
ash
@ash mencatat, terima kasih .. tapi saya pikir saya akan menyimpan ^ckunci interupsi seperti yang saya gunakan lebih sering daripada menyalin. Saya juga memperbarui jawaban untuk mencerminkan solusi saya saat ini untuk masalah ini.
tidak ada
kedengarannya bagus. Juga catat bahwa banyak menjalankan xmodmap dapat menempatkan hal-hal dalam keadaan lucu yang sulit untuk diperbaiki, jadi saya sarankan memulai baru dengan sesi X baru jika pengaruh perintah tampak salah.
ash
running bind-key -t vi-copy C-c run "tmux show-buffer | xclip -selection clipboard -i"live memberi:Unknown command: run
Alexej Magura
1
Namun, menjalankan bind-key C-c run "tmux show-buffer | xclip -selection clipboard -i"berfungsi dengan baik.
Alexej Magura

Jawaban:

13

Balasan ini tidak langsung menjawab pertanyaan Anda tentang cara membuat pintasan. Tapi inilah yang saya lakukan.

Anda dapat menangguhkan sementara melewati kunci / acara mouse Anda ke tmux dengan menahan shift. Jadi, Anda dapat menekan dan menahan Shift dan pengguna pintas biasa terminal / X untuk melakukan salinan. Dalam kasus saya menggunakan Terminator, saya tekan shift, sorot dengan mouse apa pun yang saya inginkan, salinCtrl+Shift+C

Dan jika Anda memiliki panel split, Anda dapat memperbesar panel saat ini dengan tombol zoom-toggle Prefix + z, dan melakukan operasi salin. (diuji pada tmux v1.8)

Muneeb
sumber
Saya tidak dapat menggunakan ini karena pemisahan horizontal tetapi trik zoom terdengar hebat, terima kasih atas tipnya.
tidak ada
Ini bekerja di terminal gnome, pasti; tetapi apakah ini berlaku untuk semua emulator terminal? Mungkin tidak
jpaugh
Di terminal-wsl, ini berfungsi. Selamatkan hari saya!
Qinsi