Bu arabellek uzak (ssh) tmux oturumundan kopyalamak için xclip kullanarak iki büyük sorunu gidermesi gereken oldukça uzun cevabım:
1. Tepki Vermeyen xclip
Benim için Grauwolf en @ cevap ile xclip
çalışmadı (tamamen irresponsive bölmesinde tmux oluşturur). Neden Arch wiki'nin Tmux sayfasında olduğunu öğrendim :
xclip, bu amaçla da kullanılabilir, xsel'den farklı olarak, geçerli yerel ayarlara uymayan ham bit akışını yazdırmada daha iyi çalışır. Bununla birlikte, xclip yerine xsel kullanmak daha düzenlidir, çünkü xclip, tmux'un tampon belleğinden okuduktan sonra STDOUT'u kapatmaz. Bu nedenle, tmux kopyalama görevinin tamamlandığını bilmez ve xclip'in sonlandırılmasını beklemeye devam eder, bu nedenle tmux'u yanıt vermiyor. Bir çözüm, xclip'in STDOUT'unu / dev / null dizinine yönlendirmektir.
Öyleyse, bağlayıcı:
bind-key C-y run "tmux save-buffer - | xclip -i -sel clip > /dev/null"
Şimdi, eğer tmux oturumunuz yerel ise bu işe yarayacak.
2. xclip X ile bağlantı kuramıyor
Eğer ssh -X üzerinde tmux kullanıyorsanız , bunun doğrudan işe yaramayacağı büyük ihtimaller .
Bunun nedeni, kabuk değişkeninin $DISPLAY
uygun şekilde ayarlanması gerektiğidir.
Tam çözüm
Bu yüzden, benim için tam çalışma çözümü benim aşağıdaki satırları koymaktır ~/.tmux.conf
:
set-option -g update-environment "DISPLAY"
bind-key C-y run "export DISPLAY=`tmux show-env | sed -n 's/^DISPLAY=//p'`; tmux save-buffer - | xclip -i -selection clipboard >/dev/null"
# Or more concise:
bind-key C-y run "tmux save-buffer - | xclip -i -selection clipboard -d `tmux show-env | sed -n 's/^DISPLAY=//p'` >/dev/null
Birincilden yapıştırmak için:
bind-key C-p run "xclip -d `tmux show-env | sed -n s/^DISPLAY=//p` -o | tmux load-buffer - && tmux paste-buffer"
$DISPLAY
Kaynak alırken neden doğru şekilde ayarlanmadığını tam olarak anlamadım .tmux.conf
, bu yüzden tmux show-env
ve ile çıkartmam gerekiyor sed
.
Tmux> = 1.8 varsa, bu komutu aşağıdakilerle uyarlayabilirsiniz copy-pipe
:
bind-key -t vi-copy y copy-pipe 'xclip -in -selection clipboard -d `tmux show-env | sed -n s/^DISPLAY=//p` >/dev/null'