Cuộn ngang trong Terminal


12

Vì vậy, có tôi tin rằng 2 câu hỏi về điều này đã. Tất cả chúng để làm với tail -fvà do đó mọi người đưa ra câu trả lời tiếp theo là "sử dụng ít hơn".

Tôi cần nó cho mọi thứ, mọi lệnh, v.v. Vấn đề là tôi cần chạy nhiều cửa sổ console và thậm chí với nhiều màn hình vẫn cần phải thu nhỏ chúng xuống. Kết quả là mọi đầu ra đều bị xáo trộn bởi việc gói dòng và khó đọc.

Một giải pháp được đề xuất là echo -ne '\e[?7l', hoạt động, phần nào. Vấn đề bây giờ, có cách nào để có được thanh cuộn trên bàn điều khiển không?

Ubuntu 12.10, Thiết bị đầu cuối


Như một ví dụ (để đáp lại tất cả các bình luận "đây không phải là cách các thiết bị đầu cuối hoạt động"!) Tôi chỉ ra Ubuntu Console cho Windows không hỗ trợ tính năng này. Các ứng dụng như lsmcedithoạt động tốt trong đó, vì chiều rộng màn hìnhchiều rộng bộ đệm được xử lý riêng.
cz

Câu trả lời:


10

Những gì bạn đang hỏi là một thiết bị đầu cuối có chiều rộng vô hạn, một phần trong đó đang được hiển thị. Đó không phải là cách các thiết bị đầu cuối truyền thống hoạt động cũng như cách các ứng dụng mong đợi chúng hoạt động.

Chẳng hạn, nếu thiết bị đầu cuối có chiều rộng vô hạn, các ứng dụng trực quan sẽ hoạt động như thế nào khi chúng muốn hiển thị một cái gì đó ở giữa màn hình?

Một cái gì đó tiếp cận mà bạn có thể làm là sử dụng GNU screen(bạn được cho là có thể đính kèm một phiên màn hình từ một số thiết bị đầu cuối có kích thước khác nhau để màn hình biết cách hiển thị một cửa sổ nhỏ của thiết bị đầu cuối lớn hơn) và đặt screenchiều rộng cửa sổ thành một cái gì đó rất lớn và sau đó lừa các ứng dụng trực quan nghĩ rằng chiều rộng màn hình là bản gốc.

Thích (trong screen)

c=$COLUMNS # assuming your shell has that variable
screen -X width -w 1000
stty cols "$c"

Một số ứng dụng trực quan sẽ hoạt động tốt, một số ứng dụng không tốt (để cài đặt khi chúng định vị tương đối hoặc khi chúng dựa vào gói đầu cuối). vimCó vẻ hoạt động tốt.

Sau đó, để di chuyển và sao chép dán dữ liệu, lựa chọn duy nhất là sử dụng screen's bản sao chế độ. ( <prefix>]) và di chuyển xung quanh con trỏ (xem info -f screen -n Movementđể di chuyển xung quanh trong chế độ sao chép ).

tmux có thể có khả năng tương tự.

Trình terminatorgiả lập thiết bị đầu cuối này (dựa trên java), không phải terminatorlà đi kèm với ubfox cũng làm điều đó với chiều rộng thiết bị đầu cuối vô hạn:

  • dòng không bao giờ được bọc
  • các ứng dụng trực quan được cho biết chiều rộng màn hình là bất cứ thứ gì phù hợp trong cửa sổ, không phải vô cực.
  • nó cũng sẽ hoạt động tốt hơn screengiải pháp dựa trên ở trên rằng mục terminfo của nó tuyên bố rằng nó không thực hiện ngắt dòng để các ứng dụng nhận thức được điều đó và BS ở đầu dòng không di chuyển đến cuối dòng trước đó.

Tôi đã ở trong môi trường gui nên nếu tôi muốn mở tệp trong trình chỉnh sửa trực quan, tôi có thể khởi chạy gui từ thiết bị đầu cuối. Dù sao thì việc sao chép vào chúng sẽ dễ dàng hơn vì nó ở trong một thiết bị đầu cuối, vì bạn thực sự không thể dễ dàng kéo một khối trong một thiết bị đầu cuối mà không bị cắt. Chạy screen -X width -w 1000trở lại No screen session found., ý tưởng nào?
srcspider

@srcspider Như tôi đã nói, bạn cần phải làm điều đó trong screen. Bắt screenđầu trước.
Stéphane Chazelas

okey Tôi nghĩ rằng tôi có được bạn bây giờ, về cơ bản tôi nên chạyscreen -X width -w 1000 <mycommand>
srcspider

1
@srcspider. Số screenlà một trình giả lập thiết bị đầu cuối dựa trên thiết bị đầu cuối. Vì vậy, bạn cần bắt đầu trước như bạn cần bắt đầu xtermhoặc gnome-terminaltrước, bằng cách chạy screenlệnh. Sau đó, bên trong trình giả lập thiết bị đầu cuối mới đó, bạn chạy screen -Xlệnh đó để yêu screencầu thay đổi độ rộng cửa sổ của nó. Xem thêm câu trả lời đã được chỉnh sửa của tôi cho terminatortrình giả lập mà tôi nghi ngờ bạn sẽ thích.
Stéphane Chazelas

Cảm ơn! Ngay cả khi bằng cách nào đó tôi không khiến họ làm việc, ít nhất bây giờ tôi biết tại sao tôi không thể khiến họ làm việc như vậy.
srcspider

6

Mặc dù Emacs chủ yếu là một trình soạn thảo và IDE¹, nhưng nó rất phù hợp với vấn đề của bạn. Bạn có thể chạy một chương trình bên trong cửa sổ Emacs và Emacs hiển thị nó trong một thiết bị đầu cuối câm có chiều rộng và chiều cao vô hạn. Nếu con trỏ ở cuối bộ đệm, cửa sổ sẽ cuộn khi chương trình tạo đầu ra; nếu bạn di chuyển con trỏ xung quanh, cửa sổ sẽ giữ nguyên khi đầu ra tăng.

Nhập M-x shell RET(tức là Alt+ x shell Return) để bắt đầu một trình bao trong bộ đệm Emacs. Nhập C-u M-x shell REThoặc M-1 M-x shell RETđể bắt đầu một vỏ khác. Bạn có thể chạy một chương trình trong mỗi shell và sắp xếp bộ đệm trong nhiều cửa sổ theo ý muốn.

¹ Nó đôi khi được gọi là một hệ điều hành tốt hơn so với biên tập viên, nhưng chỉ bởi những người không sử dụng nó - đó chỉ là một trò đùa.

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.