Виправлена ​​підсвітка в tmux


18

Я пропускаю виділення (зворотний режим) на консолі, оскільки я почав використовувати urxvt + tmux в якості основного терміналу. Основні моменти було замінено курсивом - що спочатку виглядає досить круто - однак я не можу знайти одне курсивне слово у тисячах не курсивом, коли я намагаюся шукати щось у less.

Це працює належним чином, поки тип терміналу встановлений на xterm*профіль (наприклад, set -g default-terminal "xterm-color"у .tmux.conf ). Однак деякий ярлик не може працювати, додатки не можуть отримати належну геометрію терміналу, ... в цьому випадку.

Відповіді:


11

Я знайшов інформацію та рішення про неї на сторінках tmux:

У описі терміна на екрані відсутній режим курсиву та на його місці встановлений режим очікування, але використовуючи ту саму послідовність, що urxvtвикористовується для курсиву. Це означає, що програми (на зразок vim), які шукають курсив, не знайдуть його і можуть перетворити його на зміну, а додатки (як менше), які просять вичерпатись, у кінцевому підсумку будуть курсивом замість зворотного.

[Виправлення 1] Замініть записи terminfo та отримайте зворотній + курсив

(на кожного користувача!)

Для того, щоб знати , що додатки tmuxопор курсиву і використовувати правильну послідовність для безумовного переможця, вам потрібно створити новий Terminfo файл зі зміненою sgr, smso, rmso, sitmі ritmзаписом:

$ 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

І скажіть tmux використовувати його в ~ / .tmux.conf :

set -g default-terminal "screen-it"

Якщо ваш термінал підтримує 256 кольорів, використовуйте:

$ screen_terminfo="screen-256color"

замість "екрану". Додаткову інформацію див. У розділі FAQ щодо 256-кольорової підтримки. Також зауважте, що tmux все ще відображатиме зворотне відео на терміналах, які не підтримують курсив.

Якщо ви urxvtвзагалі не можете відображати курсив, переконайтеся, що у вас увімкнено шрифт з курсивом, наприклад, додайте до ~ / .Xdefaults :

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

[Виправлення 2] Просто замініть курсивні символи управління зворотним

Додайте цю термінальну перестановку до ~ / .tmux.conf :

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

2
Виправлення 1, здається, працює, але це 2015 рік, чи може це бути справді так складно?
користувач1338062

На жаль, я не можу знайти кращого рішення для цього питання + я перестав шукати, коли знайшов це у списку розсилки tmux ... :(
andras.tim

4
Ну, відповідно до tmux FAQ tmux 2.1 повинен виправити поведінку. Тому я думаю, що це потрібно лише тимчасово. Я особисто просто зробив те , що сказав ОП і встановити мій default-terminalдо xterm.
user1338062

Іноді це не дуже добре. Наприклад, коли ви маєте сумісність із PuTTY, ви не можете використовувати xterm, лише screeenваріанти.
andras.tim

1
Виправлення 1 працювало на мене, але моє соляризоване dircolorsзникло; Мені вдалося це виправити, додавши TERM screen-itдо списку терміналів у ~/.dircolors.
Бенджамін В.

4

Швидший спосіб:

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

Працює без будь-якої подальшої магії (і досі прислухається до попередження у посібнику tmux про тип термінала, який потребує "екрану" або його похідної).


1
Для мене працює чудово, наприклад, watch -n10 -d COMMAND args..дозволяє виявити зміни зараз (наприклад, пробіли! Як зробити курсивні пробіли?). Я думаю, це має бути прийнятою відповіддю. Примітка: Коли термінал уже відкритий, використовуйтеTERM=screen.xterm-new; export TERM
Tino

2

Я запускаю urxvt в arch linux. Відповідь оп не допомогла мені. Це допомогло мені:

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


пошук italicі запуск цього; потім, покладіть це в tmux config

set -g default-terminal "tmux"

не використовуйте "tmux-256color". (спробуйте, я думаю, але це не спрацювало.)


нарешті, додайте це до свого rc (.zshrc, .bashrc тощо):

export TERM="xterm-256color"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.