Sử dụng con lăn trong màn hình GNU


254

Làm cách nào tôi có thể thiết lập màn hình GNU để cho phép cuộn của chuột cuộn xung quanh trong bộ đệm cuộn? Tôi đã cố gắng với Google về điều này, nhưng hầu hết các lần truy cập là về cách cho phép các ứng dụng bên trong màn hình sử dụng con lăn.


JesperE - Bạn có thể thay đổi câu trả lời đã chọn không? Tôi đã nhầm lẫn, và các ý kiến ​​là đúng, câu trả lời khác là cách tốt hơn.
Geoff

Không sử dụng màn hình hiện nay, nhưng các upvote có vẻ đủ thuyết phục. :)
JesperE

Câu trả lời:


359

Tôi tin rằng bạn chỉ có thể thêm một dòng như thế này vào ~/.screenrc:

termcapinfo xterm* ti@:te@

Trong đó "xterm *" là kết quả khớp toàn cầu của HẠN hiện tại của bạn. Để xác nhận nó hoạt động, ^ A ^ D để tách khỏi màn hình của bạn, sau đó screen -d -rgắn lại, sau đó lsmột vài lần và thử cuộn lại. Nó làm việc cho tôi.


Phép thuật này là gì? Vâng, hãy tham khảo các trang hướng dẫn.

screen(1) nói:

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.

Từ termcap(5):

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

28
Tôi đã làm theo gợi ý của Pistos và nó hoạt động một phần. Như anh mô tả, tôi có thể nhập một số lệnh (để tạo ra đầu ra đủ để cuộn màn hình), sau đó sử dụng bánh xe chuột để cuộn qua các dòng trước. Trên thực tế, tôi đang sử dụng màn hình qua Konsole trong KDE (về cơ bản là thẻ xterm) và thanh cuộn cho cửa sổ Konsole hoạt động theo cách tương tự. Nhưng có một vấn đề: Nếu bạn chuyển đổi giữa các cửa sổ của màn hình (^ An, ^ Ap), bộ đệm cuộn của bạn sẽ bị rối. Nội dung của bất kỳ cửa sổ nào bạn chuyển sang sẽ chỉ được 'nhét' vào bộ đệm cuộn của bạn. Điều đó thực sự làm giảm nó.
Ryan B. Lynch

22
Nhưng điều này cuộn quanh trong lịch sử lệnh. Tôi muốn cuộn qua bộ đệm đầu ra.
JesperE

15
@JesperE: Tôi cũng đã trải nghiệm nó khi cuộn lịch sử lệnh (Tôi đang sử dụng thiết bị đầu cuối Gnome của Ubuntu). Tôi đã sửa nó bằng cách vào Chỉnh sửa -> Tùy chọn hồ sơ -> Cuộn và bỏ chọn "Sử dụng tổ hợp phím để cuộn trên màn hình thay thế". Lưu ý rằng tôi vẫn cần sử dụng bản sửa lỗi của Pistos.
Michael Krebs

2
Ngoài việc làm việc trong OS X Lion, điều này cũng hoạt động trong Putty, iSSH và Prompt (bởi Panic). Dòng này phải có trong tất cả các tệp .screenrc!
funroll

20
Điều này cho phép cuộn trong thiết bị đầu cuối không cuộn trong phiên màn hình. Tức là nếu bạn làm việc với các vùng được phân chia hoặc chuyển đổi một cửa sổ, bạn sẽ không thể cuộn lại trong khu vực này và thay vào đó, bạn sẽ cuộn lại trong đầu ra thiết bị đầu cuối và xem đầu ra như trước khi bạn chia vùng hoặc thay đổi cửa sổ .
g_daniel

69

Trong màn hình, trước tiên bạn phải nhập "chế độ cuộn lại" (hoặc "chế độ sao chép") để có thể cuộn xung quanh trong bộ đệm cuộn: tổ hợp phím Ctrl- a Eschoặc Ctrl- a Ctrl- [. Sau đó, bạn có thể cuộn quanh lịch sử bằng phím Lên và Xuống (hoặc Ctrl- b, Ctrl- fđể di chuyển một trang).

Trong chế độ đó, con lăn chuột của bạn cũng sẽ hoạt động, nếu nó hoạt động trong các ứng dụng khác. Bạn kết thúc "chế độ cuộn lại" với Esc.

Đối với việc cuộn bộ đệm cuộn mà không vào chế độ cuộn trước, điều đó có lẽ là không thể nếu không sửa đổi màn hình. Tôi chưa bao giờ nghe nói về cách truy cập bộ đệm cuộn, ngoài chế độ cuộn lại.


21
Vâng, tôi biết về chế độ cuộn lại. Tôi đã hy vọng rằng tôi sẽ không phải nhập thủ công chế độ cuộn lại để sử dụng chuột. Cảm ơn.
JesperE

4
"Chế độ cuộn ngược" là một thuật ngữ IMHO không chính thức. :) Ctrl + a Esc sẽ vào chế độ sao chép ; chế độ này luôn được gọi là như vậy, vì mục đích chính của nó là làm cho nó có thể sao chép văn bản qua lại. Khả năng cuộn bằng bánh xe chuột ở chế độ sao chép (nb. Không hoạt động đối với tôi) nên được xem như là một loại "mánh lới quảng cáo bổ sung", nhưng không phải là mục đích chính của chế độ này.
cú pháp

1
@syntaxerror: Chà, các tài liệu gọi nó là "chế độ sao chép / cuộn ngược" và đề cập đến "bộ đệm cuộn" ( gnu.org/software/screen/manual/screen.html#Copy-and-Paste ), vì vậy tôi đoán chúng tôi ' lại cả hai quyền :-). Dù sao, tôi đã thêm "chế độ sao chép" vào câu trả lời của mình.
sleske

Tuyệt quá! Tôi cũng muốn làm điều này, nhưng trước khi nhầm vào những câu trả lời cũ như vậy, tôi được biết là đã hỏi trước (mặc dù tôi biết rằng các quy tắc SO / SE không quy định nó, nhưng đó là điều với các quy tắc bất thành văn.)
cú pháp

Đây nên là câu trả lời chính thức. Cảm ơn bạn :)
Linh

24

Bài viết tuyệt vời mà Jon Z đang đề cập không còn nữa, nhưng tôi đã có thể đánh cá phiên bản chỉ có văn bản của nó từ bộ đệm của Google. Tôi sẽ lưu nó ở đây trong trường hợp Google cũng sẽ giảm trong tương lai. Bài viết gốc là của Mikael Ståldal vì vậy tín dụng đến hạn.

-

Cách sử dụng mousewheel trong GNU Screen

GNU Screen có hỗ trợ cuộn ngược, nhưng theo mặc định, bạn phải sử dụng các phím khó xử lý để sử dụng nó. Tôi muốn có thể sử dụng Shift-PageUp, Shift-PageDown và con lăn chuột để cuộn, giống như bạn có thể làm trong xterm.

Không dễ để cấu hình Màn hình cho việc này và nó liên quan đến việc hợp tác với trình giả lập thiết bị đầu cuối. Nhưng cuối cùng tôi cũng đã đạt được một giải pháp hoạt động khá tốt. Thêm phần này vào tệp ~ / .Xresource của bạn (bạn cần đăng xuất để phần này có hiệu lực):

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

Sau đó thêm tệp này vào tệp ~ / .screenrc của bạn:

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

Điều này hoạt động trong xterm. Tôi không chắc nếu nó hoạt động trong các trình giả lập thiết bị đầu cuối khác.

Lưu ý rằng điều này vô hiệu hóa hỗ trợ cuộn thông thường trong xterm, bạn sẽ chỉ có thể cuộn khi sử dụng Màn hình. Bạn có thể muốn bắt đầu xterm như thế này để luôn sử dụng Màn hình:

xterm -e screen


11

Và để sử dụng con lăn trong VIM bên trong Màn hình GNU:

[.vimrc]

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

Thật tuyệt vời, điều này kết hợp với thủ thuật screenrc đã làm cho ngày của tôi kể từ khi tôi sử dụng awesomewm và thiết bị đầu cuối là cuộc sống của tôi
Fotios

7

Nhấn Ctrl+ atheo sau là[

Thanh tiêu đề của thiết bị đầu cuối của bạn bây giờ sẽ nói chế độ Sao chép.

Bây giờ các phím mũi tên và bánh xe chuột sẽ hoạt động như mong đợi.

Để trở về bình thường, nhấn Esc hoặc nhấn Enter vài lần.


5

Đặt TERMbiến thành vt100thay vì xtermtrước khi chạy màn hình cũng hoạt động.
Tôi đã sử dụng điều này trong một thời gian dài, hoạt động như một bùa mê.

Thêm phần này vào .bashrc:

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

-

Để tham khảo, tôi .screenrccó cái này (không cần cho AFAIK này):

# 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

Đặt biến môi trường TERM như mô tả (trước khi chạy màn hình) làm việc cho tôi. Nó đơn giản như việc nhập khóa trong "export TERM = vt100". Cảm ơn rất nhiều. PS: Tôi đang dùng Mac, ssh vào hộp Linux và ở đó tôi chạy màn hình.
Daniel K.

Như đã đề cập ở trên, điều này không hoạt động như dự định. Có, bạn có thể cuộn tuy nhiên bộ đệm cuộn của bạn bị ghi đè khi bạn thay đổi cửa sổ.
Halsafar

giải pháp rất được đánh giá thấp
MolbOrg

4

Những điều sau đây làm việc cho tôi trong cả Cygwin và Putty: Chỉnh sửa .screenrc và thêm

terminfo xterm* ti=:te=

3

Nếu các câu trả lời ở trên không phù hợp với bạn, hãy đảm bảo bạn không có chú thích hoặc tùy chọn alwayslastline được đặt trong .screenrc của bạn. Nếu bạn có chúng, điều này sẽ không hoạt động:

termcapinfo xterm* ti@:te@

Nếu bạn cần thông tin này, bạn có thể thử đặt nó trong tiêu đề của thiết bị đầu cuối của bạn (với termcapinfo)


0

Giải pháp khi sử dụng "Ubuntu 16.04.2 LTS" như sau:

a). Cập nhật $ HOME / .screenrc như các câu trả lời trước đã chỉ định:

termcapinfo xterm* ti@:te@

b). Sử dụng "Cài đặt". "Ứng dụng ưu tiên" để thay đổi thiết bị đầu cuối mặc định thành xterm, bằng cách chọn "Thiết bị đầu cuối X" trong danh sách thả xuống.

Một số ghi chú thừa

  • Không có thiết bị đầu cuối nào khác, kể cả cài đặt "lxterminal", hoạt động với tôi, ngay cả khi tôi thay đổi dòng termcapinfo thành "*" thay vì "xterm *".

  • Bằng cách nhấp vào nút menu ở góc trên cùng bên trái của màn hình, bạn có thể nhận được hộp thoại Cài đặt bằng biểu tượng thứ 3 từ góc dưới bên phải.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.