разделенные панели tmux / vim

2739
Community

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

разделенные панели tmux / vim

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

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

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

2 ответа на вопрос

8
romainl

The character used by tmux for drawing its pane border is or U+2502. It is a 1px or 2px wide line in the middle of the cell. The rest of the cell is empty and you are just seeing your terminal's background color on each side of the line.

I see three ways to "fix" this.

  • Use the same background color in Vim and your terminal emulator.

  • Tell tmux to draw borders with the same color for the background and the foreground.

  • Tell tmux to use some other character like █ to draw the borders.

The two last solutions will make your borders noticeably fatter and the last one may introduce display glitches depending on the font you use.

I personnally have my Vim background and my terminal background set to the same color.

(thanks ZyX)

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

Following the third @romainl advice you can use U+258C or U+2590 characters (LEFT and RIGHT HALF BLOCK characters respectively) and tell tmux to set (in case of LEFT and vim being on the left) foreground color to vim background and background color to shell background.

This option is to be set from the vimrc when $TMUX variable exists and is non-empty (it is set by tmux inside child processes) and reset on the VimLeave event. This assumes that you always open vim in left pane only. With some adjustments you can detect what pane you are in (tmux list-panes, one with (active) at the end) whether there is vim in adjacent window (by checking the border key) and adjust tmux settings accordingly.

Похожие вопросы