GNU ekranında kaydırma tekerini kullanma


255

Farenin kaydırma tekerleğinin geri kaydırma arabelleğinde gezinmesini sağlamak için GNU ekranını nasıl ayarlayabilirim? Google'a bunu denedim, ancak çoğu isabet ekran içindeki uygulamaların kaydırma tekerleğini kullanmasına nasıl izin verileceği üzerineydi.


JesperE - Seçilen cevabı değiştirebilir misiniz? Kafam karıştı ve yorumlar doğru, diğer cevap çok daha iyi.
Geoff

Bugünlerde ekran kullanmıyor, ancak upvotes yeterince ikna edici görünüyor. :)
JesperE

Yanıtlar:


361

Ben sadece böyle bir satır ekleyebilirsiniz inanıyorum ~/.screenrc:

termcapinfo xterm* ti@:te@

"Xterm *" şu anki TERM'nizin bir glob maçıdır. Çalıştığını onaylamak için, ^ A ^ D ekranınızdan ayırın, ardından screen -d -ryeniden takın, ardından lsbirkaç kez tekrar deneyin. Benim için çalışıyor.


Bu sihir nedir? El ile ilgili sayfalara bakalım.

screen(1) diyor:

termcapinfo term terminal-tweaks [window-tweaks]
  [..]
  The first argument specifies which terminal(s) should be affected by this
  definition. You can specify multiple terminal names by separating them with
  `|'s. Use `*' to match all terminals and `vt*' to match all terminals that
  begin with "vt".
  [..]
  Some examples:

      termcap xterm*  LP:hs@

  Informs screen that all terminals that begin with `xterm' have firm
  auto-margins that allow the last position on the screen to be updated (LP),
  but they don't really have a status line (no 'hs' -  append  `@'  to turn
  entries off).  Note that we assume `LP' for all terminal names that start
  with "vt", but only if you don't specify a termcap command for that terminal.

Gönderen termcap(5):

String capabilities
    [..]
    te   End program that uses cursor motion
    ti   Begin program that uses cursor motion

28
Pistos'un önerisini takip ettim ve kısmen işe yarıyor. Açıkladığı gibi, bazı komutları girebilirim (ekranı kaydırmak için yeterli çıktı üretmek için) ve daha sonra önceki satırlar arasında gezinmek için fare tekerini kullanın. Aslında, KDE'de Konsol üzerinden ekran kullanıyorum (temelde sekmeli xterm, ve Konsole penceresi için kaydırma çubuğu aynı şekilde çalışıyor. Ancak bir sorun var: Ekranın pencereleri (^ An, ^ Ap) arasında geçiş yaparsanız, kaydırma arabelleğiniz bozulur. Geçiş yaptığınız tüm pencerelerin içeriği, kaydırma arabelleğinize 'sıkışmış' olur. Bu gerçekten azalıyor.
Ryan B. Lynch

22
Ancak bu komut geçmişinde kayar. Çıktı arabelleğini kaydırmak istiyorum.
Mart'ta

15
@JesperE: Komut geçmişini de kaydırdım (Ubuntu'nun GNOME terminalini kullanıyorum). Düzenle -> Profil Tercihleri ​​-> Kaydırma bölümüne gidip "Alternatif ekranda kaydırma yapmak için tuş vuruşlarını kullan" seçeneğinin işaretini kaldırarak düzelttim. Pistos'un düzeltmesini hala kullanmam gerektiğini unutmayın.
Michael Krebs

2
OS X Lion'da çalışmaya ek olarak, bu aynı zamanda Putty, iSSH ve Prompt'ta da çalışır (Panic tarafından). Bu satır tüm .screenrc dosyalarında bulunmalıdır!
funroll

20
Bu, terminalde kaydırmanın ekran oturumunda kaymamasını sağlar. Bölünmüş bölgelerle çalışıyorsanız veya bir pencereyi değiştirirseniz, bu bölgede geri dönemezsiniz ve bunun yerine terminal çıkışına geri döner ve bölgeyi bölmeden veya pencereyi değiştirmeden önceki çıkışı görürsünüz. .
g_daniel

69

Ekranda, geri kaydırma arabelleğinde gezinebilmeniz için önce "kaydırma modu" (veya "kopyalama modu") girmeniz gerekir: tuş kombo Ctrl- a Escveya Ctrl- a Ctrl- [. Ardından, Yukarı ve Aşağı tuşlarını (veya bir sayfayı taşımak için Ctrl- b, Ctrl-) kullanarak geçmişte gezinebilirsiniz f.

Bu modda, diğer uygulamalarda çalışıyorsa fare tekerleğiniz de çalışmalıdır. İle "kaydırma modu" nu bitirirsiniz Esc.

İlk olarak geri kaydırma moduna girmeden geri kaydırma arabelleğini kaydırmaya gelince, muhtemelen ekranı değiştirmeden mümkün değildir. Geri kaydırma modunun dışında geri kaydırma arabelleğine erişmenin bir yolunu hiç duymadım.


21
Evet, geri kaydırma modunu biliyorum. Fareyi kullanmak için el ile geri kaydırma moduna girmem gerekeceğini umuyordum. Teşekkürler.
09:20

4
"Kaydırma modu" oldukça resmi olmayan bir terimdir. :) Ctrl + a Esc kopyalama moduna girer ; bu mod her zaman bu şekilde adlandırılmıştır, çünkü asıl amacı metni ileri geri kopyalamaktır. Fare tekerleğiyle kopyalama modunda kaydırma yapma olanağı (nb. Benim için çalışmıyor) daha ziyade bir çeşit "ek hile" olarak görülmeli, ancak bu modun ana amacı olarak görülmemelidir.
sözdizimi

1
@syntaxerror: Dokümanlar buna "kopyala / geri kaydırma modu" diyor ve "geri kaydırma arabelleğinden" bahsediyorlar ( gnu.org/software/screen/manual/screen.html#Copy-and-Paste ), sanırım biz ' Her ikisi de doğru :-). Her neyse, cevabıma "kopyalama modu" ekledim.
sleske

Harika! Bunu da yapmak istedim, ama böyle eski cevapları karıştırmadan önce, ilk olarak sordum (SO / SE kurallarının bunu reçete etmediğinin farkında olsam da; ama bu yazılı olmayan kurallara sahip.)
sözdizimi

Bu resmi cevap olmalıydı. Teşekkür ederim :)
Linh

24

Jon Z'nin bahsettiği mükemmel makale artık mevcut değil, ancak salt metin sürümünü Google önbelleğinden avlayabildim. Gelecekte Google'ın da düşürmesi ihtimaline karşı burada saklıyorum. Orijinal gönderi Mikael Ståldal tarafından yapıldı, bu yüzden kredi vadesi geldi.

-

Fare tekerleği GNU Ekranında nasıl kullanılır

GNU Ekranı geri kaydırma desteğine sahiptir, ancak varsayılan olarak kullanmak için garip tuşları kullanmanız gerekir. Tıpkı xterm'de yapabileceğiniz gibi Shift-PageUp, Shift-PageDown ve fare tekerleğini kullanabilmek istiyorum.

Ekranı bunun için yapılandırmak kolay değildi ve terminal emülatörü ile işbirliğini içeriyor. Ama sonunda oldukça iyi çalışan bir çözüm elde etmeyi başardım. Bunu ~ / .Xresources dosyanıza ekleyin (etkili olması için oturumu kapatmanız gerekir):

XTerm*saveLines: 0
XTerm*vt100.translations: #override \n\
  Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  Lock @Num_Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  @Num_Lock Ctrl <Btn4Down>: string(0x1b) string("[25S") \n\
  <Btn4Down>: string(0x1b) string("[5S") \n\
  Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  Lock @Num_Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  @Num_Lock Ctrl <Btn5Down>: string(0x1b) string("[25T") \n\
  <Btn5Down>: string(0x1b) string("[5T") \n\
  Shift <KeyPress> Prior: string(0x1b) string("[25S") \n\
  Shift <KeyPress> Next: string(0x1b) string("[25T") \n

Sonra bunu ~ / .screenrc dosyanıza ekleyin:

defscrollback 1000

# Scroll up
bindkey -d "^[[5S" eval copy "stuff 5\025"
bindkey -m "^[[5S" stuff 5\025

# Scroll down
bindkey -d "^[[5T" eval copy "stuff 5\004"
bindkey -m "^[[5T" stuff 5\004

# Scroll up more
bindkey -d "^[[25S" eval copy "stuff \025"
bindkey -m "^[[25S" stuff \025

# Scroll down more
bindkey -d "^[[25T" eval copy "stuff \004"
bindkey -m "^[[25T" stuff \004

Bu xterm'de çalışır. Diğer terminal emülatörlerinde çalışıp çalışmadığından emin değilim.

Bunun xterm'deki normal kaydırma desteğini devre dışı bıraktığını, yalnızca Ekran kullanırken kaydırma yapabileceğinizi unutmayın. Ekranı her zaman kullanmak için xterm'i böyle başlatmak isteyebilirsiniz:

xterm -e screen


11

Ve kaydırma tekerini GNU Ekranının içindeki bir VIM'de kullanmak için:

[.Vimrc]

set mouse=a             " hold shift to copy xterm
set ttymouse=xterm2     " necessary for gnu screen & mouse

Harika, bu ekran rt hile ile birlikte awesomewm kullandığımdan beri günümü yaptı ve terminaller benim hayatım
Fotios

7

Ctrl+ Ve aardından tuşlarına basın[

Terminalinizin başlık çubuğunda Kopyalama modu yazmalıdır.

Şimdi ok tuşları ve fare tekerleği beklendiği gibi çalışmalıdır.

Normal duruma dönmek için Esc tuşuna basın veya birkaç kez Enter tuşuna basın.


5

TERMDeğişken ayarı vt100yerine xtermekran çalıştırmadan önce de çalışır.
Bunu uzun zamandır kullanıyorum, çekicilik gibi çalışıyor.

Bunu şu adrese ekleyin .bashrc:

# make scrollbar / wheel scrolling work when running screen in gnome-terminal (or other)
if [ "$TERM" = "xterm" ]; then
  export TERM=vt100
fi

-

Referans için, benim .screenrcbu (bu AFAIK için gerekli değildir) var:

# Extend the vt100 desciption by some sequences.
termcap  vt100* ms:AL=\E[%dL:DL=\E[%dM:UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC
terminfo vt100* ms:AL=\E[%p1%dL:DL=\E[%p1%dM:UP=\E[%p1%dA:DO=\E[%p1%dB:LE=\E[%p1%dD:RI=\E[%p1%dC

TERM ortam değişkenini açıklandığı gibi ayarlamak (ekranı çalıştırmadan önce) benim için çalıştı. "Export TERM = vt100" anahtarını girmek kadar basit. Çok teşekkürler. PS: Mac'liyim, Linux kutusuna ssh ve orada ekran çalıştırıyorum.
Daniel K.

Yukarıda belirtildiği gibi bu amaçlandığı gibi çalışmaz. Evet, kaydırma yapabilirsiniz ancak pencereleri değiştirdiğinizde kaydırma arabelleğiniz geçersiz kılınır.
Halsafar

çok az çözüm
MolbOrg

4

Hem Cygwin hem de Putty'de benim için çalıştı: .screenrc'yi düzenleyin ve ekleyin

terminfo xterm* ti=:te=

3

Cevaplar yukarıda sizin için işi yoksa, bir yok emin olun yazısını veya alwayslastline sizin .screenrc seçeneği seti. Onlara sahipseniz, bu çalışmaz:

termcapinfo xterm* ti@:te@

Bu bilgiye ihtiyacınız varsa, terminalinizin başlığında (ile termcapinfo) ayarlamayı deneyebilirsiniz.


0

"Ubuntu 16.04.2 LTS" kullanırken çözüm aşağıdaki gibidir:

a). Önceki yanıtlar belirtildiği gibi $ HOME / .screenrc dosyasını güncelleyin :

termcapinfo xterm* ti@:te@

b). Açılır listeden "X Terminali" ni seçerek varsayılan terminali xterm olarak değiştirmek için "Ayarlar". "Tercih Edilen Uygulamalar" ı kullanın.

Bazı gereksiz notlar

  • "Xterm *" yerine termcapinfo satırını "*" olarak değiştirsem bile, "lxterminal" kurulumu da dahil olmak üzere diğer terminallerin hiçbiri benim için çalışmadı.

  • Ekranın sol üst köşesindeki menü düğmesine tıklayarak, sağ alt köşedeki 3. simgeyi kullanarak Ayarlar iletişim kutusunu alabilirsiniz.

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.