tmux, Vim và Solarized


19

Cơ sở

Duyệt qua tmux , VimSolarized tôi có thể tìm thấy rất nhiều phàn nàn về 256 màu sắc và "trải nghiệm người dùng". Chà, tôi đang gặp "vấn đề" ngược lại, tức là Vim hoạt động tốt với chủ đề Solarized đầy đủ chỉ có trong tmux .

Lý lịch

Bây giờ tôi đã điều chỉnh và điều chỉnh xung quanh một chút với sơ đồ màu của thiết bị đầu cuối UbuntuGuake của tôi và tôi gần như đạt được sự hoàn hảo đạt được khi tôi sử dụng tmux , điều này có nghĩa là luôn luôn. Tôi đang cố gắng để hiểu tại sao điều này xảy ra.

Ở đây bên dưới có hai Thiết bị đầu cuối, bên trái chỉ chạy Vim (hiển thị dòng điện .vimrc) trong khi bên kia đang chạy Vim bên trong phiên tmux . Như bạn có thể thấy rõ, chỉ trong phiên tmux , phông chữ được in đậm, mà tôi đoán là chính xác (hay không?).

nhập mô tả hình ảnh ở đây

Câu hỏi

Tại sao tmux cho phép phông chữ đậm trong khi thiết bị đầu cuối, nơi tmux đang chạy, không? Đây có phải là một lỗi hoặc một tính năng?


Đầu ra echo $TERMtrong và ngoài là tmuxgì?
jasonwryan

tmux nói screentrong khi thiết bị đầu cuối nói xterm:)
Vào

@jasonwryan đọc câu hỏi khác của OP ở đây và câu trả lời của Gilles cho câu hỏi tương tự ở đây . Rõ ràng $TERMlà không liên quan.
terdon

@terdon đây là tài liệu trong trường hợp này: tmux yêu cầu thuật ngữ này được đặt thành màn hình (hoặc một biến thể) và theo mặc định, xterm là một thuật ngữ 8 màu. Đó là lý do tại sao OP đang nhìn thấy sự khác biệt.
jasonwryan

Đặt xterm*termName: xterm-256colortrong của bạn ~/.Xresourcesvà xem nếu điều đó làm cho một sự khác biệt ...
jasonwryan

Câu trả lời:


22

Câu trả lời ngắn

Đó là một lỗi.

Câu trả lời đầy đủ

Dường như "đúng" hình dung là một ở bên trái, nơi mà các font chữ đậm được không trả lại. Đối với những gì tôi có thể hiểu ( ở đây là tham chiếu), thuộc tính in đậm đã được sử dụng, ban đầu, để đặt phiên bản được tô sáng của 8 màu cơ bản.

Trong lịch sử, đã có sự tương ứng một-một giữa các phiên bản in đậm của 8 màu ANSI mặc định và các phiên bản sáng của 8 màu mặc định. Trước đây, khi một chương trình màu yêu cầu hiển thị văn bản in đậm, có lẽ các trình giả lập thiết bị đầu cuối sẽ dễ dàng hiển thị phiên bản sáng hơn của bất kỳ màu nào của văn bản (và mong muốn người dùng hiểu đó là đậm) hơn là hiển thị kiểu chữ với một trọng lượng đậm.

Về cơ bản, điều đang xảy ra ở đây là, để sử dụng bảng màu Solarized đầy đủ , với màu cam , tím và tất cả các mức độ màu xám , các màu được gọi với thuộc tính đậm , lần lượt đề cập đến 8 màu thay thế của Bảng màu ANSI.

Terminal hiểu điều này một cách chính xác, và hiển thị màu cammàu xám nhận xét trong cách sắp chữ thông thường , trong khi tmux thêm một phông chữ đậm không cần thiết cho chúng. Tóm lại, bên trái là chính xác trong khi bên phải thì không.

Câu hỏi 2

Có cách nào để vô hiệu hóa kết xuất đậm của tmux không?
Tôi vẫn phải thực hiện một số nghiên cứu về nó, và tôi sẽ cập nhật câu trả lời này ngay khi tôi tìm thấy thứ gì đó.

Trả lời 2

Và ở đây chúng tôi có giải pháp! :)

Để tmux hoạt động chính xác, chúng ta phải gọi nó nói với anh ta rằng chúng ta đang ở trong môi trường kích hoạt 256 màu.

TERM=xterm-256color /usr/bin/tmux

Để thuận tiện, chúng tôi có thể làm aliasđiều này (tức là bạn thêm alias tmux="<the line above>"vào của bạn ~/.bashrc).

tmux diễn giải chính xác các màu "đậm thay thế" không đậm

Gọi tmuxtmux -2, để buộc tmux chạy với hỗ trợ 256 màu (thay vì xác định lại TERMbiến môi trường) sẽ không cho phép giải thích chính xác 8 màu "thay thế đậm" (nghĩa là biến thể sáng hơn cũng sẽ có kiểu chữ đậm). Do đó, tôi đặc biệt khuyên bạn nên sử dụng giải pháp ở đây để có cả hai cách giải thích 256 màu chính xác các màu "đậm thay thế" không đậm.


người đàn ông yêu nhiều !!
shxfee
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.