Vim-Splits können in tmux nicht in der Größe geändert werden


47

Außerhalb von funktioniert alles einwandfrei tmux. Aber tmuxich kann die Größe von Vim-Splits nicht mit der Maus ändern. Ich habe set mouse=ain meinem .vimrc. Gibt es dafür eine Lösung?

.tmux.conf:

$ cat ~/.tmux.conf
set-option -g mode-mouse on
set-option -g mouse-resize-pane on
set-option -g mouse-select-pane on
set-option -g mouse-select-window on

AFAIK Dies ist ein bekanntes / ungelöstes Problem. Wenn Sie Ihre Maus zugunsten Ihrer Tastatur ablegen, ist dies natürlich so gut wie kein Problem.
Romainl

11
Hast du auch versucht ttymouse=xterm2in Vim einzustellen ? Dadurch kann ich Vim- Splits innerhalb von tmux verschieben (dies scheint standardmäßig der Fall zu sein, xterm2wenn es mit ausgeführt wird TERM=xterm, was wahrscheinlich außerhalb von tmux der Fall ist ).
Chris Johnsen

@ ChrisJohnsen es funktioniert !! Bitte
poste

@romainl Hallo! Das Ändern der Fenstergröße mit den vim-Standardschlüsselbindungen ist meiner Meinung nach ziemlich einfach. xD
trusktr

Dies ist keine Kitt-Ausgabe
JasonSzhao

Antworten:


69

Es scheint, dass das Ziehen der Statuszeile zum Ändern der Größe einer Teilung nicht möglich ist, wenn die Option Vim aktiviert ttymouseist xterm. es funktioniert aber, wenn der Wert ist xterm2. Letzterer Wert konfiguriert Vim so, dass es nach einem erweiterten Mausberichtsmodus fragt, der (unter anderem) eine bessere Unterstützung für das Ziehen bietet. Dieser erweiterte Modus funktioniert nur mit neueren Versionen von xterm (und anderen kompatiblen Terminalemulatoren, einschließlich tmux ), daher ist dies nicht der Standardwert.

.vimrcZum Festlegen der Option können Sie Folgendes verwenden :

set mouse+=a
if &term =~ '^screen'
    " tmux knows the extended mouse mode
    set ttymouse=xterm2
endif

(Ich bin mir jedoch nicht sicher, wie sich dies auf tatsächliche Bildschirminstanzen auswirkt , die ebenfalls einen BEGRIFF verwenden, der mit beginnt screen.)

Wenn Sie sich außerhalb von tmux befinden , ist die Umgebungsvariable TERM wahrscheinlich ein xterm-ish-Wert, und Vim sucht mithilfe der Steuersequenz nach der xterm- Version t_RV.


3
Sie erwähnen, dass Sie nicht wissen, wie sich dies auf den Bildschirm auswirkt (im Gegensatz zu tmux ). Die Antwort lautet: Bildschirm hat das gleiche Problem, und genau diese Korrektur funktioniert auch dort.
Moss Collum

1
die bedingung wird in meinem tmux nicht wahr, aber das einfache setting der variablen funktioniert.
jasonszhao

1
Wenn Sie in einem Terminal mit mehr als 223 Spalten arbeiten, müssen Sie festlegen ttymouse, dass sgras xterm2nicht darüber hinausgeht. Sie können überprüfen, ob Ihr Vim unterstützt sgrmit has("mouse_sgr"). Es sollte immer sicher sein zu setzen sgrstatt , xterm2weil es ist rückwärtskompatibel. Siehe:help ttymouse
Sudo Bash

14

In meinem Fall wurden beide Fälle behoben: Größenunterschied der Maus und Problem mit der Mausposition für Breitbild.

Das Update ist:

if has("mouse_sgr")
    set ttymouse=sgr
else
    set ttymouse=xterm2
end

Das hat bei mir funktioniert.
Paul Brannan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.