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.
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.
Câu trả lời:
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 -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.
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
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.
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
Đối với OS X (Snow Leopard), phần sau đây hoạt động với tôi:
http://slaptijack.com/system-adftime/mac-os-x-terminal-and-gnu-screen-scrollback/
Tóm lại, nó liên quan đến việc thêm đoạn sau vào ~ / .screenrc trên máy chủ từ xa (màn hình bạn đang chạy trên màn hình):
defscrollback 5000
termcapinfo xterm* ti@:te@
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
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.
Đặt TERM
biến thành vt100
thay vì xterm
trướ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 .screenrc
có 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
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=
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
)
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.