Вопрос tmux / vim split panes


Я заимствую этот снимок экрана с другого вопрос:

enter image description here

Фон терминала, кажется, просачивается в vim слева от разделительной границы. Это наиболее заметно верхний,

Может ли кто-нибудь сказать мне, почему / что это такое, и если я могу избавиться от него, так что разделение чистое?


6
2017-10-12 16:20


происхождения


Предполагая, что то, что вы видите, является побочным эффектом того, что символы в эмуляторе терминала должны занимать полный блок. Этот блок имеет один передний план и один цвет фона. Поскольку линия рисуется с символами в терминальном эмуляторе, у вас будет эта «утечка». - Randy Morris
Этот блок появляется вне tmux? Моя образованная догадка заключается в том, что Vim просто не рисует этот блок, потому что для этого (по крайней мере, в некоторых терминалах) заставит курсор обернуться, таким образом прокрутив весь экран / панель вверх на одну строку. - echristopherson


ответы:


Символ, используемый tmux для рисования границы панели,  или U+2502, Это широкая линия 1px или 2px в середине ячейки. Остальная часть ячейки пуста, и вы видите только цвет фона вашего терминала на каждой стороне линии.

Я вижу три способа «исправить» это.

  • Используйте тот же цвет фона в Vim и эмуляторе терминала.

  • Скажите tmux, чтобы рисовать границы с тем же цветом для фона и переднего плана.

  • Скажите tmux использовать другой символ, например █, чтобы нарисовать границы.

Два последних решения сделают ваши границы заметно более жирными, а последний может привести к сбоям дисплея в зависимости от используемого шрифта.

У меня лично есть фон Vim, а фон моего терминала установлен в один цвет.

(спасибо ZyX)


8
2017-10-12 18:26



Одна коррекция: tmux не использует бар для рисования границы, вместо этого используется символ U + 2502 «BOX DRAWING LIGHT VERTICAL», который выглядит намного лучше (символ бара не занимает полную высоту (в конце и почти всех других шрифтах, которые я пробовал) и даже содержит пространство посередине в некоторых других шрифтах). - ZyX
Хороший момент, спасибо. - romainl
Кстати, каков вариант изменения пограничного характера? Я нашел несколько из них для изменения цветов границ, но не для изменения пограничного символа. - ZyX
Я действительно не думаю, что есть способ заменить пограничный характер - не без настройки источника по крайней мере. - dev


Следуя третьему совету @romainl, вы можете использовать символы U + 258C или U + 2590 (соответственно символы LEFT и RIGHT HALF BLOCK) и указать tmux для установки (в случае LEFT и vim слева) цвет переднего плана на фоне и фоне vim цвет фона оболочки.

Этот параметр должен быть установлен из vimrc, когда $TMUX переменная существует и непуста (она задается tmux внутри дочерних процессов) и сбрасывается в событии VimLeave. Это предполагает, что вы всегда открываете vim только на левой панели. С некоторыми настройками вы можете определить, в какой области вы находитесь (tmux list-panes, один с (active) в конце), есть ли vim в соседнем окне (путем проверки граничного ключа) и соответствующим образом отрегулируйте параметры tmux.


3
2017-10-12 20:32