Menggunakan roda gulir di layar GNU

254

Bagaimana saya bisa mengatur layar GNU untuk memungkinkan roda gulir mouse untuk menggulir di dalam buffer scrollback? Saya mencoba ke Google tentang hal ini, tetapi sebagian besar hits adalah tentang cara mengizinkan aplikasi di dalam layar menggunakan roda gulir.

JesperE
sumber
JesperE - Bisakah Anda mengubah jawaban yang dipilih? Saya bingung, dan komentarnya benar, jawaban yang lain jauh lebih baik.
Geoff
Tidak menggunakan layar saat ini, tetapi upvotes tampaknya cukup meyakinkan. :)
JesperE

Jawaban:

359

Saya yakin Anda bisa menambahkan baris seperti ini ke ~/.screenrc:

termcapinfo xterm* ti@:te@

Di mana "xterm *" adalah pertandingan global TERM Anda saat ini. Untuk mengonfirmasi itu berfungsi, ^ A ^ D untuk melepaskan dari layar Anda, kemudian screen -d -runtuk memasang kembali, kemudian lsbeberapa kali, dan mencoba untuk menggulir kembali. Ini bekerja untuk saya.


Sihir apa ini? Baiklah, mari kita lihat halaman buku panduan.

screen(1) mengatakan:

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.

Dari termcap(5):

String capabilities
    [..]
    te   End program that uses cursor motion
    ti   Begin program that uses cursor motion
Pistos
sumber
28
Saya mengikuti saran Pistos, dan sebagian berhasil. Saat ia menjelaskan, saya dapat memasukkan beberapa perintah (untuk menghasilkan output yang cukup untuk menggulir layar), dan kemudian menggunakan roda mouse untuk menggulir kembali melalui garis sebelumnya. Sebenarnya, saya menggunakan layar melalui Konsole di KDE (tab xterm, pada dasarnya), dan scrollbar untuk jendela Konsole bekerja dengan cara yang sama. Tapi ada masalah: Jika Anda beralih di antara jendela layar (^ An, ^ Ap), buffer scrollback Anda akan kacau. Konten dari jendela mana pun yang Anda gunakan hanya akan 'dimasukkan' ke dalam buffer scrollback Anda. Itu benar-benar menguranginya.
Ryan B. Lynch
22
Tetapi ini bergulir di sekitar dalam sejarah perintah. Saya ingin menelusuri buffer output.
JesperE
15
@JesperE: Saya juga mengalami scrolling histori perintah (saya menggunakan terminal GNOME Ubuntu). Saya memperbaikinya dengan pergi ke Edit -> Preferensi Profil -> Menggulir, dan menghapus centang "Gunakan penekanan tombol untuk menggulir pada layar alternatif". Perhatikan bahwa saya masih perlu menggunakan perbaikan Pistos.
Michael Krebs
2
Selain bekerja di OS X Lion, ini juga berfungsi di Putty, iSSH dan Prompt (oleh Panic). Baris ini harus ada di semua file .screenrc!
funroll
20
Ini memungkinkan pengguliran di terminal tidak bergulir di sesi layar. Yaitu jika Anda bekerja dengan daerah split atau beralih jendela Anda tidak akan dapat menggulir kembali di wilayah ini dan sebaliknya Anda akan menggulir kembali dalam output terminal dan melihat output seperti sebelum Anda membagi wilayah atau mengubah jendela .
g_daniel
69

Di layar, pertama-tama Anda harus memasukkan "mode gulir mundur" (atau "mode salin") untuk dapat menggulir di dalam buffer gulir mundur: kombo kunci Ctrl- a Esc, atau Ctrl- a Ctrl- [. Kemudian Anda dapat menggulir di sekitar riwayat menggunakan tombol Atas dan Bawah (atau Ctrl- b, Ctrl- funtuk memindahkan halaman).

Dalam mode itu, roda mouse Anda juga harus berfungsi, jika berfungsi di aplikasi lain. Anda mengakhiri "mode gulir balik" dengan Esc.

Adapun untuk menggulir buffer scrollback tanpa terlebih dahulu memasuki mode scrollback, itu mungkin tidak mungkin tanpa memodifikasi layar. Saya belum pernah mendengar cara mengakses buffer scrollback, selain dari mode scrollback.

sleske
sumber
21
Ya, saya tahu tentang mode scrollback. Saya berharap bahwa saya tidak perlu masuk ke mode scrollback secara manual untuk menggunakan mouse. Terima kasih.
JesperE
4
"Mode Scrollback" bukan istilah IMHO tidak resmi. :) Ctrl + a Esc akan memasuki mode salin ; mode ini selalu disebut demikian, karena tujuan utamanya adalah untuk memungkinkannya menyalin teks ke sana kemari. Kemungkinan untuk menggulir dengan roda mouse dalam mode salin (nb. Tidak bekerja untuk saya) lebih baik dilihat sebagai semacam "tipu muslihat tambahan", tetapi bukan sebagai tujuan utama mode ini.
syntaxerror
1
@syntaxerror: Ya, dokumen menyebutnya "mode salin / gulir balik", dan sebutkan "buffer gulir mundur " ( gnu.org/software/screen/manual/screen.html#Copy-and-Paste ), jadi saya kira kita akan keduanya benar :-). Lagi pula, saya menambahkan "mode salin" ke jawaban saya.
sleske
Bagus! Saya ingin melakukan ini juga, tetapi sebelum mengacaukan jawaban lama seperti itu, saya dikenal untuk bertanya terlebih dahulu (meskipun saya tahu aturan SO / SE tidak meresepkannya; tetapi itu adalah hal dengan aturan tidak tertulis.)
syntaxerror
Ini seharusnya menjadi jawaban resmi. Terima kasih :)
Linh
24

Artikel bagus yang dirujuk oleh Jon Z tidak lagi tersedia, tetapi saya dapat menangkap versi hanya teks dari cache Google. Saya menyimpannya di sini kalau-kalau Google juga menjatuhkannya di masa depan. Posting asli oleh Mikael Ståldal sehingga kredit di mana kredit jatuh tempo.

-

Cara menggunakan roda mouse di Layar GNU

Layar GNU memiliki dukungan untuk scrollback, tetapi secara default Anda harus menggunakan tombol canggung untuk menggunakannya. Saya ingin dapat menggunakan Shift-PageUp, Shift-PageDown dan roda mouse untuk menggulir, seperti yang dapat Anda lakukan di xterm.

Itu tidak mudah untuk mengkonfigurasi Layar untuk ini, dan itu melibatkan kerjasama dengan terminal emulator. Tetapi saya akhirnya berhasil mencapai solusi yang bekerja cukup baik. Tambahkan ini ke file ~ / .Xresources Anda (Anda harus keluar agar ini berlaku):

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

Kemudian tambahkan ini ke file ~ / .screenrc Anda:

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

Ini berfungsi dalam xterm. Saya tidak yakin apakah itu berfungsi di emulator terminal lain.

Perhatikan bahwa ini menonaktifkan dukungan pengguliran normal dalam xterm, Anda hanya akan dapat menggulir saat menggunakan Layar. Anda mungkin ingin memulai xterm seperti ini untuk selalu menggunakan Layar:

xterm -e screen
Tommi R.
sumber
11

Dan untuk menggunakan scrollwheel di dalam VIM di dalam Layar GNU:

[.vimrc]

set mouse=a             " hold shift to copy xterm
set ttymouse=xterm2     " necessary for gnu screen & mouse
Edench
sumber
Luar biasa, ini dalam kombinasi dengan trik screenrc membuat hari saya sejak saya menggunakan awesomewm dan terminal adalah hidup saya
Fotios
7

Tekan Ctrl+ adiikuti oleh[

Bilah judul terminal Anda sekarang harus mengatakan mode Salin.

Sekarang tombol panah dan roda mouse harus berfungsi seperti yang diharapkan.

Untuk kembali ke normal tekan Esc atau tekan Enter beberapa kali.

Peter Crotty
sumber
5

Pengaturan TERMvariabel vt100sebagai ganti xtermsebelum menjalankan layar juga berfungsi.
Saya sudah menggunakan ini untuk waktu yang lama, bekerja seperti pesona.

Tambahkan ini ke Anda .bashrc:

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

-

Untuk referensi, saya .screenrcpunya ini (tidak diperlukan untuk AFAIK ini):

# 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
perasan lemon
sumber
Mengatur TERM variabel lingkungan seperti yang dijelaskan (sebelum menjalankan layar) bekerja untuk saya. Sesederhana memasukkan "export TERM = vt100". Terima kasih banyak. PS: Saya menggunakan Mac, ssh ke dalam kotak Linux dan di sana saya menjalankan layar.
Daniel K.
Seperti disebutkan di atas ini tidak berfungsi sebagaimana dimaksud. Ya, Anda dapat menggulir namun buffer gulir Anda ditimpa ketika Anda mengubah windows.
Halsafar
solusi yang sangat diremehkan
MolbOrg
4

Berikut ini berfungsi untuk saya di Cygwin dan Putty: Edit .screenrc dan tambahkan

terminfo xterm* ti=:te=
Torbjör Weiland
sumber
3

Jika jawaban di atas tidak bekerja untuk Anda, pastikan Anda tidak memiliki teks atau opsi alwayslastline yang diatur dalam .screenrc Anda. Jika Anda memilikinya, ini tidak akan berfungsi:

termcapinfo xterm* ti@:te@

Jika Anda membutuhkan informasi ini, Anda dapat mencoba mengaturnya di judul terminal Anda (dengan termcapinfo)

nachocab
sumber
0

Solusi saat menggunakan "Ubuntu 16.04.2 LTS" adalah sebagai berikut:

Sebuah). Perbarui $ HOME / .screenrc seperti yang ditentukan sebelumnya:

termcapinfo xterm* ti@:te@

b). Gunakan "Pengaturan". "Aplikasi Pilihan" untuk mengubah terminal default ke xterm, dengan memilih "Terminal X" di daftar drop-down.

Beberapa catatan berlebihan

  • Tidak ada terminal lain, termasuk menginstal "lxterminal", yang bekerja untuk saya, bahkan ketika saya mengubah baris termcapinfo menjadi "*" alih-alih "xterm *".

  • Dengan mengklik tombol menu di sudut kiri atas layar, Anda bisa mendapatkan dialog Pengaturan menggunakan ikon ke-3 dari sudut kanan bawah.

Malcolm Boekhoff
sumber