Làm cách nào tôi có thể nhận được 256 màu trên Terminal mặc định qua SSH?


5

Rất nhiều câu hỏi tương tự, nhưng tôi dường như không thể tìm thấy bất cứ điều gì phù hợp chính xác.

Tôi đang sử dụng Terminal mặc định (trong Yosemite) để SSH vào VM. Thiết bị đầu cuối của VM được thiết lập để sử dụng TERM=xterm-256colorđúng cách và 256 màu hoạt động cục bộ trên VM với cùng cài đặt thiết bị đầu cuối, nhưng màu sắc sẽ không vượt qua kết nối SSH. Có ai có ý tưởng gì về việc đưa Terminal vào xử lý đầu ra như các chuỗi màu 256 bình thường không?

Tất cả những gì tôi muốn ở đây là tìm hiểu tại sao mã thoát 256 màu bị bỏ qua trong Terminal.app khi chúng đi qua kết nối SSH. Và, tất nhiên, để làm cho nó ngừng bỏ qua các chuỗi thoát.


Có thể thông tin quá mức:

VM đang chạy windows 7, shell là bash trên cygwin, ssh server là bitvise.

Tôi đang xem xét 3 trường hợp - cục bộ trên bash OSX gốc trong Terminal.app, cục bộ trong bash VM trong MinTTY và trong VM thông qua SSH trong Terminal.app.

infocmp xterm-256colortạo ra kết quả giống hệt nhau trong cả ba trường hợp và tput colorsbáo cáo 256 trong mọi trường hợp.

(tput setaf 200 && echo pink) > pink tạo ra kết quả giống hệt nhau trong cả ba trường hợp:

$ hexdump -C pink
00000000  1b 5b 33 38 3b 35 3b 32  30 30 6d 70 69 6e 6b 0a  |.[38;5;200mpink.|
00000010

cat pinkhoặc trong Terminal.app (cục bộ, không được SSH ở bất cứ đâu) hoặc trong MinTTY trên VM in ra văn bản màu hồng dự kiến. cat pinktrong Terminal.app trong khi SSH ra VM tạo ra văn bản màu xám nhạt mặc định.

Kết nối SSH được cấu hình với EscapeChar none, vì vậy dữ liệu sẽ xuất hiện mặc dù nhị phân sạch (việc thay đổi cài đặt này không có sự khác biệt).

Các tùy chọn trong Terminal.app được đặt thành báo cáo xterm-256color, mặc dù tôi không nghĩ rằng điều đó sẽ tạo ra bất kỳ sự khác biệt nào.

Bất kỳ ý tưởng về những gì đang ăn trình tự thoát để thất bại? Tôi không sử dụng bất cứ thứ gì ngoài bash ol đơn giản cho shell, không screenhoặc tmux(trừ khi Terminal.app sử dụng nó tự động / nội bộ).

Câu trả lời:


2

Bah ... bên có lỗi là máy chủ SSH. Không biết tại sao và không thể tìm thấy một nơi để vô hiệu hóa hành vi (ngoại trừ việc đi đến thiết bị đầu cuối câm đầy đủ có vấn đề riêng của nó), nhưng các opensh cũ đơn giản sẽ hoàn thành công việc.


0

Terminal chỉ defaqltly hỗ trợ 16 màu. Tôi sẽ khuyên bạn nên sử dụng một máy khách đầu cuối khác, như iTerm2 .

Một cách khác để sử dụng chương trình này để làm cho thiết bị đầu cuối hiển thị tất cả các màu.

[Trong iTerm 2] Cách được đề xuất là đặt loại thiết bị đầu cuối của bạn thành xterm-256color trong Tùy chọn-> Cấu hình-> Thiết bị đầu cuối-> Loại thiết bị đầu cuối báo cáo. Bạn cũng có thể cần đặt thiết lập nền = ánh sáng hoặc đặt nền = tối trong .vimrc của bạn. Một kỹ thuật khác được mô tả bởi Kevin Coylar trong bài đăng trên blog này về Pretty Vim Color Scheme trong iTerm2.


1
Điều này LAF không đúng. Terminal.app chắc chắn hỗ trợ 256 màu và câu hỏi bao gồm các bước hiển thị 256 màu bằng cách sử dụng mã ol ansi đơn giản từ terminfo ol đơn giản.
danwyand
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.