Sinkronisasi papan tulis antara sesi tmux jarak jauh dan papan tulis Mac OS lokal

18

Pengaturan: Saya menggunakan iTerm2 pada MacOS untuk terhubung ke server jarak jauh. Server jarak jauh menjalankan tmux, di mana saya membuka file dan mengedit dalam sesi vim.

Masalah: Saya tidak bisa menyalin / menempel antara sesi tmux jarak jauh dan klien iTerm lokal. Saya dapat menggunakan alt / option + pemilihan mouse iTerm 2 untuk memilih teks, tetapi ini menyalin lebih dari beberapa panel vim / panel tmux - buruk.

Apakah ada solusi elegan untuk membuat pilihan di panel tmux menyinkronkan antara papan tulis jarak jauh dan lokal (papan tulis MacOS)? Saya telah melihat reattach-to-user-namespace , tapi saya cukup yakin itu tidak melakukan apa yang saya inginkan.

bhargav
sumber
3
Apakah ini benar-benar masalah tmux? Menurut saya sepertinya Anda akan memiliki masalah yang sama secara umum menghubungkan ssh saja.
kejadlen
3
Ini mungkin bukan masalah tmux, tetapi ini adalah masalah alur kerja. Saya tidak bisa menjadi satu-satunya yang memiliki masalah persis ini - itulah sebabnya saya bertanya-tanya apa yang orang lain lakukan untuk mengatasinya.
bhargav

Jawaban:

13

Jadi, ketika Anda ssh ke server, Anda dapat menggunakan tunneling terbalik sehingga Anda dapat berbicara kembali ke mesin OSX Anda untuk mengirimnya lakukan perintah pbcopy.

ssh -R 1234:localhost:22 remoteServer

Ganti 1234dengan port terbuka apa pun server jarak jauh. Kemudian di server jarak jauh, Anda kemudian dapat menjalankan:

tmux save-buffer - | ssh -p 1234 localhost pbcopy

Itu harus terhubung kembali ke OSX dan mengirim isi dari tmux copy buffer Anda ke sana. Anda mungkin ingin menggunakan kunci ssh untuk mencegah mengetik kata sandi Anda ke mesin OSX Anda.

Jika berhasil, Anda dapat membuat tmux keybindings.

bind C-c run "tmux save-buffer - | ssh -p 1234 localhost pbcopy"

Saya harus perhatikan, agar ini berfungsi, Anda harus mengaktifkan Remote Sharing di OSX.

Opsi Sekunder:

Karena Anda menggunakan OSX, jika Anda juga menggunakan iTerm2, Anda dapat mempertimbangkan untuk memasang http://code.google.com/p/iterm2/downloads/detail?name=tmux-for-iTerm2-20120203.tar.gz&can = 2 & q = di server Anda.

Pada dasarnya tmux khusus yang mendukung flag "-C". Bendera ini menyerahkan jendela, dan panel serta semua pemisahannya ke iTerm2.

paus
sumber
2

Metode yang lebih sederhana

  1. Aktifkan XQuartz untuk menyinkronkan clipboard
  2. Gunakan penerusan X11 ketika Anda terhubung ke server jarak jauh
  3. Memiliki ikatan seperti di tmux.conf Anda: bind-key C-c run ‘tmux show-buffer | xsel -pbi'
    • di mana clipboard X pilihan Anda adalah setelah pipa

Anda juga bisa melakukan pengikatan serupa di vim

pendiam
sumber
0

Berkat jawaban Paus, saya mencoba tmux -Cpetunjuk itu.

  1. Anda tidak perlu menginstal apa pun, karena versi tmux saat ini mendukung -Cflag.
  2. Gunakan -CC, karena -Ctidak selalu berfungsi.

Jadi dengan tmux -CC(atau tmux -CC attach) tmux bahkan lebih baik daripada yang sudah ada.

mamiu
sumber