Panoyu bash ve X11 arasında paylaşın


12

Gelen bu konuya X11 panoya, daha önce bir gnome-terminali üzerinde fare ile seçildikten metni kopyalamak için nasıl üst cevabı gösterir.

Benim sorum: Diyelim ki bash set-mark ve klavye kısayollarını (yani set-mark+ M-w) kullanarak terminalden bir metin kopyaladım . Bu panoyu X11 ile paylaşmak mümkün mü?

DÜZENLEME : Orijinal soruda, panoya GNOME ile paylaşma hakkında konuştum, ancak Gilles'in aşağıda belirttiği gibi, GNOME'un özellikle bir panosu yok (X'e genel), bu yüzden soruyu güncelledim.


Gnome terminalinde, sistem panosuna kopyalayıp yapıştırmak için Ctrl + Üst Karakter + C ve Ctrl + Üst Karakter + V tuşlarını da yazabilirsiniz.
Yalan Ryan

2
Bu yazıya bakın stackoverflow.com/questions/994563/… Ama benim için çalışmıyor.
harika q

Yanıtlar:


10

Bash'ın panosu bash için dahili, bash X sunucusuna bağlanmaz.

Yapabileceğiniz şey M-w, bash'ın iç panosuna ek olarak seçimi X panosuna¹ kopyalamanın anlamını değiştirmek . Ancak bash'ın entegrasyonu oldukça gevşek ve bölge bilgisine veya panoya bash kodundan erişmenin bir yolu olduğunu düşünmüyorum. Tüm satırı X panosuna kopyalamak için bir anahtar ciltleme yapabilirsiniz.

if [[ -n $DISPLAY ]]; then
  copy_line_to_x_clipboard () {
    printf %s "$READLINE_LINE" | xsel -ib
  }
  bind -x '"\eW": copy_line_to_x_clipboard'
fi

Kabukta süslü şeyler yapmak istiyorsanız, (diğer avantajların yanı sıra) satır editörü ve komut dosyası dili arasında çok daha iyi bir entegrasyona sahip olan zsh'a geçin.

if [[ -n $DISPLAY ]]; then
  x-copy-region-as-kill () {
    zle copy-region-as-kill
    print -rn -- "$CUTBUFFER" | xsel -ib
  }
  x-kill-region () {
    zle kill-region
    print -rn -- "$CUTBUFFER" | xsel -ib
  }
  zle -N x-copy-region-as-kill
  zle -N x-kill-region
  bindkey '\C-w' x-kill-region
  bindkey '\ew' x-copy-region-as-kill
fi

¹ Gnome'un özellikle bir panosu yoktur, bu X için geneldir.
² Bash 4.1'den itibaren, anahtar ayrıştırma kodunda bir hata var: bağlı tuş dizileri bind -xiki karakterden uzun olamaz. Bence bash 4.2 bazı uzun önekleri düzeltti ama hepsini değil; Ayrıntıları araştırmadım.


@Gilles fikri için teşekkürler! Sanırım öğrenme ve geçme zamanı zsh.
Amelio Vazquez-Reina

En sonunda! Çok teşekkürler! Bu copy_line_to_x_clipboardtam olarak çok uzun bir süredir eksik olduğum şeydi: shift + insert'in kopya eşdeğeri. Ctrl-x ( bind -x '"\C-x") olarak değiştirdim çünkü tadıma Escçok uzak (ve Cc mümkün olan en aptalca bir seçim olurdu).
pbarill

Terminaller normalde varsayılan olarak alt tuşuna bağlı bir meta anahtarına sahiptir. Bir karakteri basılı tutarken yazmak esc, o karaktere çevrilir , böylece onu yazabilirsiniz alt-w.
DoMiNeLa10

7

@Gilles zaten mükemmel bir cevap verdi. Sadece xclipX panosuna terminal çıktısını kopyalamanın çok yararlı bir yolu olan varlığından bahsetmek istiyorum , sadece içine bir şey pipo ile:

$ cat /etc/passwd | xclip

1
Sadece xclipvarsayılan olarak birincil arabelleğe kopyalayan bir not . Panoyu kullanmak için tuşunu kullanın xclip -selection clipboard.
Sparhawk
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.