Đã sửa lỗi tô sáng trong tmux


18

Tôi nhớ tô sáng (chế độ đảo ngược) trên bảng điều khiển kể từ khi tôi bắt đầu sử dụng urxvt + tmux làm thiết bị đầu cuối chính. Các điểm nổi bật đã được thay thế bằng phông chữ nghiêng - ban đầu trông khá tuyệt - tuy nhiên tôi không thể tìm thấy một từ in nghiêng trong hàng ngàn chữ in nghiêng khi tôi cố gắng tìm kiếm một cái gì đó trong a less.

Điều này hoạt động đúng trong khi loại thiết bị đầu cuối được đặt thành một xterm*cấu hình (ví dụ: set -g default-terminal "xterm-color"trong .tmux.conf ). Tuy nhiên, một số phím tắt không thể hoạt động, các ứng dụng không thể có hình dạng phù hợp của thiết bị đầu cuối, ... trong trường hợp này.

Câu trả lời:


11

Tôi đã tìm thấy thông tin và giải pháp về nó trên các trang của tmux:

Mô tả terminfo của màn hình thiếu chế độ in nghiêng và có chế độ nổi bật ở vị trí của nó, nhưng sử dụng cùng một chuỗi thoát urxvtsử dụng cho chữ nghiêng. Điều này có nghĩa là các ứng dụng (như vim) tìm kiếm chữ nghiêng sẽ không tìm thấy nó và có thể chuyển sang vị trí ngược, trong khi các ứng dụng (như ít hơn) yêu cầu nổi bật sẽ kết thúc bằng chữ nghiêng thay vì ngược lại.

[Khắc phục 1] Thay thế các mục terminfo và nhận ngược + in nghiêng

(Mỗi người dùng!)

Để thực hiện các ứng dụng nhận thức được rằng tmuxsự ủng hộ nghiêng và sử dụng một dãy thoát thích hợp cho nổi bật, bạn sẽ cần phải tạo ra một mới terminfo tập tin với sửa đổi sgr, smso, rmso, sitmritmmục:

$ mkdir $HOME/.terminfo/
$ screen_terminfo="screen"
$ infocmp "$screen_terminfo" | sed \
  -e 's/^screen[^|]*|[^,]*,/screen-it|screen with italics support,/' \
  -e 's/%?%p1%t;3%/%?%p1%t;7%/' \
  -e 's/smso=[^,]*,/smso=\\E[7m,/' \
  -e 's/rmso=[^,]*,/rmso=\\E[27m,/' \
  -e '$s/$/ sitm=\\E[3m, ritm=\\E[23m,/' > /tmp/screen.terminfo
$ tic /tmp/screen.terminfo

Và nói với tmux để sử dụng nó trong ~ / .tmux.conf :

set -g default-terminal "screen-it"

Nếu thiết bị đầu cuối của bạn hỗ trợ 256 màu, hãy sử dụng:

$ screen_terminfo="screen-256color"

thay vì "màn hình". Xem mục FAQ về hỗ trợ 256 màu để biết thêm thông tin. Cũng lưu ý rằng tmux vẫn sẽ hiển thị video đảo ngược trên các thiết bị đầu cuối không hỗ trợ chữ nghiêng.

Nếu bạn hoàn toàn urxvtkhông thể hiển thị chữ nghiêng, hãy đảm bảo rằng bạn đã bật phông chữ có khả năng in nghiêng, ví dụ: thêm vào ~ / .Xdefaults :

urxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true

[Khắc phục 2] Chỉ cần thay thế các ký tự điều khiển in nghiêng bằng đảo ngược

Thêm ghi đè thiết bị đầu cuối này vào ~ / .tmux.conf :

set -g terminal-overrides 'rxvt-unicode*:sitm@,ritm@'

2
Khắc phục 1 có vẻ hiệu quả, nhưng đó là năm 2015, điều này có thực sự khó khăn đến vậy không?
user1338062

Thật không may, tôi không thể tìm thấy bất kỳ giải pháp tốt hơn cho vấn đề này + I đã ngừng tìm kiếm khi Tôi thấy điều này trên một mailing list tmux ... :(
andras.tim

4
Vâng, theo tmux FAQ tmux 2.1 nên khắc phục hành vi. Vì vậy, tôi đoán điều này chỉ cần tạm thời. Cá nhân tôi chỉ làm những gì OP nói và đặt default-terminalra xterm.
dùng1338062

Đôi khi điều này không tốt. Ví dụ: khi bạn phải tương thích với PuTTY, bạn không thể sử dụng xterm, chỉ có screeencác biến thể.
andras.tim

1
Fix 1 làm việc cho tôi, nhưng làm cho năng lượng mặt trời của tôi dircolorsbiến mất; Tôi đã có thể sửa nó bằng cách thêm TERM screen-itvào danh sách các thiết bị đầu cuối ~/.dircolors.
Benjamin W.

4

Cách nhanh hơn:

set -g terminal-overrides "screen.xterm-new"

Hoạt động mà không có bất kỳ phép thuật nào nữa (và vẫn chú ý đến cảnh báo trong hướng dẫn sử dụng tmux về loại thiết bị đầu cuối cần phải là "màn hình" hoặc một dẫn xuất của chúng).


1
Làm việc cho tôi hoàn hảo, ví dụ watch -n10 -d COMMAND args..cho phép phát hiện các thay đổi ngay bây giờ (như khoảng trống! Làm thế nào để bạn thực hiện các khoảng trống in nghiêng?). Tôi nghĩ rằng đây nên là câu trả lời được chấp nhận. Lưu ý: Khi thiết bị đầu cuối đã mở, hãy sử dụngTERM=screen.xterm-new; export TERM
Tino

2

Tôi chạy urxvt trong arch linux. Câu trả lời của op không giúp tôi. Điều này đã giúp tôi:

https://github.com/tmux/tmux/blob/2.1/FAQ#L355-L383


tìm kiếm italicvà chạy nó; Sau đó, đặt nó trong cấu hình tmux

set -g default-terminal "tmux"

không sử dụng "tmux-256color". (thử đi, tôi cho là vậy, nhưng nó không hiệu quả với tôi.)


cuối cùng, thêm phần này vào RC của bạn (.zshrc, .bashrc, v.v.):

export TERM="xterm-256color"
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.