2008-12-11 38 views
201

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

+0

JesperE - Bạn có thể thay đổi câu trả lời đã chọn không? Tôi đã bối rối, và các bình luận là đúng, câu trả lời khác là cách tốt hơn. – Geoff

+0

Không sử dụng màn hình ngày nay, nhưng những người upvotes dường như đủ thuyết phục. :) – JesperE

Trả lời

275

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

termcapinfo xterm* [email protected]:[email protected] 

đâu "xterm *" là một trận đấu glob 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 -r để gắn lại, sau đó ls mộ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 sử dụng.

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:[email protected] 

    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 
+23

Tôi đã theo dõi Pistos's gợi ý và nó hoạt động một phần. Như ông mô tả, tôi có thể nhập một số lệnh (để tạo ra đủ đầu ra để cuộn màn hình), và sau đó sử dụng con lăn chuột để cuộn lại qua các dòng trước đó. Trong thực tế, tôi đang sử dụng màn hình thông qua Konsole trong KDE (tabter xterm, về cơ bản), và thanh cuộn cho cửa sổ Konsole hoạt động theo cùng một cách. 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 (^ A-n,^A-p), bộ đệm cuộn của bạn sẽ bị rối tung lên. Nội dung của bất kỳ cửa sổ nào bạn chuyển vào sẽ chỉ bị 'nhét' vào bộ đệm cuộn của bạn. Điều đó thực sự làm giảm nó. –

+0

Hành vi bạn mô tả thực sự xảy ra, ngay cả đối với tôi. Đó là điều tôi sống cùng; Tôi chỉ thay đổi giữa bánh xe cuộn và Chế độ sao chép. – Pistos

+18

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

53

Trong màn hình, trước tiên bạn phải nhập "chế độ scrollback" (hoặc "chế độ sao chép") để có thể di chuyển xung quanh trong bộ đệm scrollback: phím combo Ctrl - mộtEsc, hoặc Ctrl - aCtrl - [. Sau đó, bạn có thể cuộn quanh lịch sử bằng các 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.

Để cuộn bộ đệm cuộn mà không cần nhập chế độ cuộn lùi lần đầu tiên, điều đó có thể không thực hiện được nếu không sửa đổi màn hình. Tôi chưa bao giờ nghe nói về một cách để truy cập bộ đệm cuộn, ngoài chế độ cuộn.

+15

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 tự nhập chế độ cuộn để sử dụng chuột. Cảm ơn. – JesperE

+3

"Chế độ cuộn lại" thay vì IMHO không chính thức. :) __Ctrl + Esc__ sẽ nhập __copy mode__; chế độ này luôn được gọi là, vì mục đích chính của nó là làm cho nó có thể sao chép văn bản sang và fro. 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ư 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. – syntaxerror

+1

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

21

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

-

Làm thế nào để sử dụng mousewheel trong GNU Screen

GNU Screen đã hỗ trợ cho scrollback, nhưng theo mặc định, bạn phải sử dụng các phím vụng về để 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ễ dàng định cấu hình Màn hình cho điều này và nó liên quan đến sự 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 đã đạt được một giải pháp hoạt động khá tốt. Thêm cái này vào ~ /.tập tin Xresources (Bạn cần phải đăng xuất cho điều 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 video này vào tập tin ~/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 

này hoạt động trong xterm. Tôi không chắc liệu nó có hoạt động trong các trình mô phỏng thiết bị đầu cuối khác hay không.

Lưu ý rằng điều này sẽ vô hiệu hóa hỗ trợ cuộn bình 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 luôn sử dụng màn hình:

xterm -e screen 
+5

Đối với tôi, liên kết gốc trong câu trả lời của Jon Z vẫn hoạt động. – kynan

8

Và để sử dụng scrollwheel trong một VIM bên GNU Screen:

[vimrc]

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

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

5

Nhấn Ctrl + a theo sau bởi [

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.

Để quay lại báo chí bình thường Esc hoặc nhấn Enter một vài lần.

3

Sau đây làm việc cho tôi trong cả hai Cygwin và Putty: Sửa Screenrc và thêm

terminfo xterm* ti=:te= 
3

Đặt TERM biến thành vt100 thay vì xterm trước khi màn hình đang chạy 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 sự quyến rũ.

Thêm phần này vào .bashrc của bạn:

# 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 .screenrc có này (không cần thiết 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 
+0

Thiết lập 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ư keying trong "xuất khẩu TERM = vt100". Cảm ơn rất nhiều. PS: Tôi đang trên một máy Mac, ssh vào một hộp Linux và ở đó tôi chạy màn hình. –

+0

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

3

Nếu câu trả lời ở trên don không hoạt động cho bạn, hãy đảm bảo bạn không có chú thích hoặc luôn luôn tùy chọn đặt trong .screenrc của bạn.Nếu bạn có chúng, điều này sẽ không làm việc:

termcapinfo xterm* [email protected]:[email protected] 

Nếu bạn cần thông tin này, bạn có thể thử thiết lập 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âu trả lời trước đã xác định:

termcapinfo xterm* [email protected]:[email protected] 

b). Sử dụng "Settings". "Preferred Applications" để thay đổi terminal mặc định thành xterm, bằng cách chọn "X Terminal" trong danh sách sổ xuống.

Một số lưu ý cần thiết

  • Không ai trong số những thiết bị đầu cuối khác, bao gồm cài đặt "lxterminal", làm việc cho tôi, ngay cả khi tôi thay đổi dòng termcapinfo để "*" thay vì "xterm *".

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

Các vấn đề liên quan