tmux / vim geteilte Scheiben

2928
Community

Ich leihe diesen Screenshot aus einer anderen Frage :

enter image description here

Der Hintergrund des Terminals scheint in die linke Ecke der Trennlinie zu gelangen. Dies ist am deutlichsten in der Nähe von Top .

Kann mir jemand sagen warum / was das ist und wenn ich es loswerden kann, so ist die Kluft sauber?

6
Zu erraten, dass das, was Sie sehen, ein Nebeneffekt der Tatsache ist, dass Zeichen in einem Terminalemulator einen vollständigen Block einnehmen müssen. Dieser Block hat einen einzelnen Vordergrund und eine einzige Hintergrundfarbe. Da die Linie innerhalb des Terminalemulators mit Zeichen gezeichnet wird, wird dieses "Leck" auftreten. Randy Morris vor 12 Jahren 0
Erscheint dieser Block außerhalb von tmux? Ich habe die Vermutung, dass Vim diesen Block einfach nicht malt, da dies (zumindest in bestimmten Terminals) dazu führen würde, dass der Cursor umläuft und der gesamte Bildschirm / Bereich eine Zeile nach oben rollen. echristopherson vor 12 Jahren 0

2 Antworten auf die Frage

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)

Eine Korrektur: tmux verwendet keinen Balken zum Zeichnen eines Rahmens, sondern verwendet stattdessen das Zeichen "BOX DRAWING LIGHT VERTICAL" von U + 2502, das viel besser aussieht (das Balkensymbol nimmt nicht die volle Höhe ein (im Endpunkt und in fast allen anderen Schriftarten, die ich versucht habe). und enthält in einigen anderen Schriftarten sogar ein Leerzeichen in der Mitte). ZyX vor 12 Jahren 1
Übrigens, was ist die Option zum Ändern des Randzeichens? Ich habe eine Anzahl von ihnen gefunden, um die Randfarben zu ändern, nicht aber um die Randzeichen zu ändern. ZyX vor 12 Jahren 6
Ich glaube wirklich nicht, dass es eine Möglichkeit gibt, den Rand zu ersetzen - nicht ohne zumindest die Quelle zu verändern. dev vor 7 Jahren 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.

Diese Option muss von der vimrc aus gesetzt werden, wenn die $TMUXVariable existiert und nicht leer ist (sie wird von tmux in untergeordneten Prozessen gesetzt) ​​und für das VimLeave-Ereignis zurückgesetzt. Dies setzt voraus, dass Sie vim immer nur im linken Bereich öffnen. Mit einigen Anpassungen können Sie feststellen, in welchem ​​Bereich Sie sich befinden ( tmux list-paneseines mit einem (active)am Ende), ob sich im benachbarten Fenster vim befindet (indem Sie die Begrenzungstaste markieren) und die Tmux-Einstellungen entsprechend anpassen.