Dies ist alles in iTerm2 unter OS X.
Ich hatte mal
export TERM='xterm-256color'
in meinem .bashrc
. Dies bedeutete, dass Vim in tmux 256 Farben verwendete.
Und einmal habe ich hinzugefügt
set -g xterm-keys on
dann funktionierten Tastaturkürzel mit Modifikatoren in Vim einwandfrei. Nämlich: shift+left/right
, den ich zum Wechseln der Vim-Registerkarten zugeordnet habe, ctrl+up/down
, den ich zum Verschieben ("Blasen") von Zeilen zugeordnet habe, und shift+left/right
, der sofort funktioniert hat, um im Befehlszeilenmodus nach Word zu springen (z. B. bei der Eingabe von :e foo bar baz
). .
Dieses Setup hatte jedoch das Problem, dass die Vim-Hintergrundfarbe nur hinter Text angezeigt wird, wie hier erwähnt .
Also entfernte ich mich
export TERM='xterm-256color'
aus meinem .bashrc
und füge dies stattdessen in meinen .tmux.conf
ein:
set -g default-terminal "screen-256color"
Dadurch wurde die Vim-Hintergrundfarbe korrigiert, die Tastaturkürzel wurden jedoch nicht mehr verwendet. Stattdessen werden unerwartete Aktionen ausgeführt (Cursor bewegen, Text löschen).
Durch die Verwendung von ctrl+v
zum Einfügen der wörtlichen Ausgabe der Tastenkombinationen (wie hier beschrieben ) konnte ich Folgendes umgehen:
map [1;5A <C-Up>
map [1;5B <C-Down>
map [1;2D <S-Left>
map [1;2C <S-Right>
cmap [1;2D <S-Left>
cmap [1;2C <S-Right>
Dadurch funktionieren die Verknüpfungen, aber es scheint nicht die richtige Lösung zu sein. Kann mir jemand sagen, was hier passiert und wie man es repariert?
Sie müssen die Fensteroption tmux xterm-keys
einstellen, damit tmux übergeben wird diese Schlüssel bis zu seinen Anschlüssen. Sie möchten dies wahrscheinlich in Ihren ~/.tmux.conf
einfügen:
set-window-option -g xterm-keys on
Vim richtet normalerweise automatisch die Behandlung dieser Schlüssel ein, wenn TERM xterm
- ist. Dies wird jedoch übersprungen, da TERM screen-256color
ist. Sie können diese Schlüssel in Ihrem ~/.vimrc
wie folgt manuell konfigurieren:
if &term =~ '^screen'
" tmux will send xterm-style keys when its xterm-keys option is on
execute "set <xUp>=\e[1;*A"
execute "set <xDown>=\e[1;*B"
execute "set <xRight>=\e[1;*C"
execute "set <xLeft>=\e[1;*D"
endif
Zumindest müssen Sie auf diese Weise nicht alle verschiedenen Kombinationen abbilden.
Wie hier erklärt Deaktivieren Sie Hintergrundfarbe löschen (BCE), indem Sie die Terminaloption t_ut
deaktivieren (:set t_ut=
in Vim ausführen und dann drücken Control+L um die Anzeige des Terminals zu aktualisieren), damit die Farbschemata ordnungsgemäß funktionieren, wenn Vim in tmux und im Bildschirm GNU verwendet wird.
Auf diese Weise können Sie Ihren Wert für TERM
als xterm-256color
beibehalten, um eine ordnungsgemäße Schlüsselerkennung zu gewährleisten und gleichzeitig eine ordnungsgemäße Wiedergabe des Vim-Farbschemas zu erhalten! :-)