Ngăn màn hình gnu thay đổi kích thước kích thước màn hình


19

Mỗi lần tôi khởi động màn hình (màn hình -A) hoặc cố gắng kết nối với phiên màn hình đã chạy (màn hình -Ax), thiết bị đầu cuối của tôi được thay đổi kích thước thành 80 cột. Tôi muốn ngăn màn hình thay đổi kích thước thiết bị đầu cuối của tôi.

Tôi đang sử dụng iTerm trên Snow Leopard và các phiên màn hình của tôi nằm trên một máy centos (tôi sử dụng bash làm vỏ của mình).

Câu trả lời:


29

Hãy thử thêm cái này (từ /etc/screenrc ) cho bạn ~/.screenrc:

# Change the xterm initialization string from is2=\E[!p\E[?3;4l\E[4l\E>
# (This fixes the "Aborted because of window size change" konsole symptoms found
#  in bug #134198)
termcapinfo xterm* 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'

Bạn có thể cần thay đổi "xterm" để khớp với $TERM.

Các termcapinfo bộ dòng is (chuỗi ininitialization) cho bất kỳ thiết bị đầu cuối nào có tên bắt đầu bằng "xterm" thành một chuỗi mã thoát. \E đại diện escape và các mã như sau:

\E[r       - set scrolling region to default (full size of window)
\E[m       - reset all resources (keyboard) to their initial values
\E[2J      - Erase in Display (ED). 2 -> Erase All.
\E[H       - set cursor position to default (1, 1)
\E[?7h     - DEC Private Mode Set. 7 -> Wraparound Mode
\E[?1;4;6l - DEC Private Mode Reset. 1 -> Normal Cursor Keys; 4  -> Jump (Fast) Scroll; 6 -> Normal Cursor Mode

Dòng thay thế có các mã sau:

\E[!p      - Soft terminal reset
\E[?3;4l   - DEC Private Mode Reset. 3 -> 80 Column Mode; 4 -> Jump (Fast) Scroll
\E[4l      - Reset Mode. 4 -> Replace Mode
\E>        - Normal keypad

(nguồn: Trình tự điều khiển XTerm )


cảm ơn! đã thêm câu trả lời này vào serverfault.com/questions/158508/õ
Joshua D'Alton

Bạn có phiền khi giải mã dòng termcapinfo không?
Huckle

2
@ Huckle: Tôi đã thêm một lời giải thích về các mã thoát.
Dennis Williamson

0

Giải thích (và tương đương được đề xuất) cho chuỗi khởi tạo xterm không hoàn toàn chính xác.

Bắt đầu với chuỗi từ mô tả thiết bị đầu cuối của xterm:

is2=\E[!p\E[?3;4l\E[4l\E>

chúng ta có

CSI ! p   Soft terminal reset (DECSTR).
CSI ? Pm l
      DEC Private Mode Reset (DECRST).
...
        Ps = 3  -> 80 Column Mode (DECCOLM).
        Ps = 4  -> Jump (Fast) Scroll (DECSCLM).
CSI Pm l  Reset Mode (RM).
...
        Ps = 4  -> Replace Mode (IRM).
ESC >     Normal Keypad (DECKPNM).

Nhưng DECSTR Đặt lại một số điều không tìm thấy trong thay thế:

  • hình dạng và hình dạng con trỏ
  • bộ nhân vật
  • các chế độ bàn phím khác liên quan đến ứng dụng / chế độ bình thường ( DECCKM, KAM, DECKPAM )
  • quay vòng (và đảo ngược)
  • chế độ gốc

Ngoài ra, nó không xóa màn hình.

Lý do sử dụng DECSTR ( Từ năm 1997 ) là để giữ thuật ngữ kích thước đủ nhỏ để phù hợp với giới hạn 1024 byte của termcap.

Cài đặt cho screen là từ gói Debian; báo cáo lỗi được đề cập trong bình luận là Debian # 134198 - màn hình: có một số loại vấn đề mô phỏng kỳ lạ đáng chú ý nhất với irssi và konsole , từ năm 2002. screen không nhận ra chuỗi đó và tình cờ, KDEole không thực hiện chuỗi đó, như đã thấy trong KDE # 134892 , đồng thời các nhà phát triển của nó tuyên bố KDE # 145977 rằng họ không thích sử dụng khác nhau TERM giá trị hơn xterm. Vì một số người dùng có thể muốn một mô tả thiết bị đầu cuối phù hợp với khả năng của konsole, đó là trong những điều cần thiết như konsole, ví dụ.,

is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8

đấu với

is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l

Xóa màn hình rõ ràng giả, phần tùy chỉnh của màn hình là

is2=\E[r\E[m\E[?7h\E[?1;4;6l

vì vậy những gì còn lại là (ngoài DECCOLM ) \E[4l.

Các \E7\E8 trong chuỗi khởi tạo lưu / khôi phục vị trí con trỏ khi điều chỉnh lề cuộn. Giống như chế độ chèn, một số người dùng sẽ nhận thấy sự vắng mặt của tính năng này.

Điểm của các tùy chỉnh là để ngăn chặn DECCOLM (Cột 80/132) chuyển đổi và hoạt động từ việc cắt giảm màn hình và tùy chỉnh khá cũ có thể không hoạt động cũng như điều chỉnh từ mô tả thiết bị đầu cuối được viết cho thiết bị đầu cuối.

Đọc thêm:

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.