Có cách nào để thoát ra ít hơn mà không bị xóa màn hình không?


68

Tương đối thường xuyên, tôi thấy mình muốn bỏ lessnhưng để lại những gì tôi đang xem trên màn hình, để tham khảo lại. Có cách nào để làm điều này? Cách giải quyết?

(Workaround hiện tại của tôi là để bỏ thuốc lá, sau đó sử dụng more. Vì vậy, bất kỳ cách giải quyết đó là tốt hơn so với được hoan nghênh. Các lý tưởng sẽ là một cái gì đó tôi có thể sử dụng một lần tôi đã được bên trong less, có lẽ với một khung cảnh vỏ hoặc một số kịch bản.)

Máy tính để bàn của tôi là OSX, nhưng tôi sử dụng máy chủ RHEL và Ubuntu.


1
Đọc một đầu ra dài (như trong git diffhoặc git log) trong less -Xsẽ chiếm bộ đệm cuộn trong thiết bị đầu cuối của tôi và loại bỏ phần lớn đầu ra trước đó. Tôi thích nó nếu lesscó thể thoát ra với màn hình đầu ra cuối cùng tại thời điểm thoát; tức là không có nhiều hơn một trang của bộ đệm cuộn sẽ được lấy sau khi thoát less. Có ý kiến ​​gì không?
musiphil

Nhân tiện, -Rthường là một sự lựa chọn an toàn hơn -r.
musiphil

Cảm ơn. Đối với những người thắc mắc:-R is "Like -r, but only ANSI "color" escape sequences are output in "raw" form. Unlike -r, the screen appearance is maintained correctly in most cases."
Steve Bennett

@musiphil Có lẽ -c?
Vanessa Phipps

@MatthewPhipps: Tôi đoán -clà về cách cập nhật màn hình khi bạn di chuyển bên trong less.
musiphil

Câu trả lời:


68

Đây thực sự là một chức năng của trình giả lập thiết bị đầu cuối mà bạn đang sử dụng (xterm, gnome-terminal, konsole, screen). Một màn hình thay thế, hoặc màn hình alts, được khởi chạy khi các chương trình như lesshoặc vimđược gọi. Màn hình này không có bộ đệm lịch sử và thoát ngay lập tức khi bạn thoát khỏi chương trình, chuyển về màn hình gốc khôi phục lại lịch sử và vị trí nội dung cửa sổ trước đó.

Bạn có thể ngăn không cho lesskhởi chạy trong màn hình alts bằng cách chuyển đối số "-X".

less -X /path/to/some/file

Bạn cũng có thể chuyển "-X" làm biến môi trường. Vì vậy, nếu bạn đang sử dụng bash, đặt nó trong ~/.bashrc:

export LESS="-X"

Tuy nhiên, điều này làm mất khả năng khởi tạo và khử khử termcap (khả năng đầu cuối), do đó các chế độ xem khác khi bạn sử dụng lesscó thể bị tắt.

Một tùy chọn khác là sử dụng screenvà đặt tùy chọn altscreen offtrong của bạn ~/.screenrc. lesssẽ không xóa màn hình và nên giữ nguyên định dạng màu. Có lẽ tmuxsẽ có tùy chọn tương tự.

Mục blog này mô tả vấn đề và cung cấp một số giải pháp khác nhau cụ thể gnome-terminalvới sự thành công khác nhau.


2
Hoàn hảo. Có một nhược điểm?
Steve Bennett

2
Đợi đã, tôi đã phát hiện ra một cái rồi - đầu ra của git log(và có thể là các lệnh màu khác) bị rối tung.
Steve Bennett

1
@SteveBennett Đủ nhỏ để tôi biến nó thành bí danh:alias les="/usr/bin/less -X"
bonsaiviking

4
Này, tôi nghĩ rằng tôi vừa phát hiện ra một loại thuốc giải độc cho git logvấn đề trên : export LESS="-r -X". (Không biết tác dụng phụ của việc đó là gì ...)
Steve Bennett

5
Trên thực tế, gitđặt LESSbiến thành FRSXnếu nó không được đặt khi nó chạy máy nhắn tin, vì vậy bạn chỉ có thể LESSbỏ đặt và lesssẽ tự động chạy với -FRSX. Tìm kiếm core.pagertrong git-config(1)để biết thêm thông tin.
musiphil

4

Giải pháp của George không hiệu quả với tôi, nhưng giải pháp này đã làm được (từ mục blog được liên kết trong câu trả lời của anh ấy).

  1. $ infocmp -I xterm > ~/xterm-noclear.src

  2. Chỉnh sửa ~ / xterm-noclear.src

    • thay đổi tên trên dòng thứ hai từ 'xterm' thành 'xterm-noclear' hoặc bất cứ điều gì phù hợp với bạn (cũng thay đổi 'xterm-debian' nếu có)

    • xóa các hướng dẫn 'smcup' và 'rmcup' (ví dụ: "smcup = \ E [? 1049h," và "rmcup = \ E [? 1049l,")

  3. $ mkdir ~/.terminfo

  4. $ tic ~/xterm-noclear.src (x / xterm-noclear sẽ xuất hiện trong thư mục ~ / .terminfo của bạn)

  5. $ export TERM=xterm-noclear (bây giờ hãy kiểm tra hành vi của ít hơn và, nếu hài lòng, hãy thêm dòng lệnh xuất vào ~ / .profile của bạn)

(Tôi đã sao chép các hướng dẫn này trực tiếp từ bản chỉnh sửa bị từ chối của @ jah.)


4

Cách tôi nhớ điều này là less -SEXkhi tôi cần kết xuất đầu ra ra màn hình nhưng không muốn các dòng bị ngắt. Ví dụ: docker ps | less -SEXCái này là gì:

  • -S
    • Cuộn thay vì bọc
    • Nếu bạn thả -E, bạn có thể sử dụng các phím mũi tên để cuộn
  • -E
    • Thoát khi bạn đạt EOF
  • -X
    • Ngăn chặn hoán đổi / xóa trống
    • Phần "bộ nhớ" là tôi biết S và E làm gì, vì vậy đây phải là phần khác. (Và lý do của chúng tôi để thực hiện lệnh này vào bộ nhớ là chúng tôi muốn kết xuất (không nhập phiên tương tác) đầu ra chưa được mở.

Nếu bạn không thể nhớ less -SEX, sẽ không có nhiều hy vọng cho bạn. Chỉ cần google lại mỗi lần tôi đoán.


Chàng trai có vấn đề và bạn đề nghị anh ta ít sex?
yossico
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.