Sie können wahrscheinlich einen Vim- :!
Befehl verwenden, tmux send-keys
um einen Control-R † an Ihren anderen Bereich zu senden . Da Sie send-keys
Tastatureingaben an jeden Bereich senden können (nicht nur an den aktiven), müssen Sie nicht einmal den aktiven Bereich hin und her wechseln.
Hier ist ein Vim-Mapping (Sie können es in Ihr .vimrc
Feld einfügen oder es einfach in die :
Eingabeaufforderung einfügen, um es auszuprobieren):
:map <Leader>rl :w<Bar>execute 'silent !tmux send-keys -t bottom C-r'<Bar>redraw!<C-M>
Dies ordnet die \rl
Tastenfolge ( <Leader>
Standardeinstellung \
, kann jedoch angepasst werden) der folgenden Sequenz von Vim-Befehlen (getrennt durch <Bar>
; siehe :help map_bar
) zu:
- Schreibe den aktuellen Puffer in seine Datei.
- Führen Sie den Befehl tmux aus, um den Control-R an den unteren ‡ Bereich zu senden .
Wir verwendenexecute
hier, damit der nächste Vim-Befehl (redraw
) nicht Teil des:!
Shell-Befehls ist.
Wir verwenden densilent
Präfixbefehl, um die Eingabeaufforderung "Press ENTER zum Fortfahren" zu vermeiden.
Sie können weglassen,slient
wenn Sie die Eingabeaufforderung oder die Ausgabe des:!
Befehls anzeigen möchten (z. B. funktioniert der Befehl tmux nicht und Sie möchten sehen, ob er eine Fehlernachricht ausgibt ). - Zeichne den Bildschirm neu.
Dies geschieht normalerweise nach der Eingabeaufforderung „Press ENTER“, aber wir unterdrücken es mitsilent
.
† Ich habe keinen Luchs, aber Control-R scheint der Reload-Schlüssel zu sein, der auf meiner Suche nach „Luchs reload“ basiert (z. B. „Dateien neu laden und Anzeige aktualisieren“ der Bedienungsanleitung).
‡ Außerdem bottom
können Sie den Zielbereich auf andere Weise festlegen (suchen Sie in der tmux- Manpage nach „Zielbereich“ ):
.+1
,.-1
: nächstes, vorheriges Fenster in diesem Fenstertop
,bottom
,left
,right
, Und Kombinationen vontop
/bottom
mitleft
/right
(dhbottom-left
)%42
( tmux 1.5+): Eine mit%
Präfix versehene Fensternummer aus der Umgebungsvariablen TMUX_PANE des ZielfenstersDieses letzte Formular kann nützlich sein, wenn sich Ihr Lynx-Fenster nicht immer in demselben Tmux- Fenster befindet wie Ihre Vim-Instanz. Speichern Sie vor dem Starten von Lynx den Wert von TMUX_PANE in einer temporären Datei und lesen Sie dann die Datei, um das Zielbereichsargument zu bilden:
# before running Lynx (anytime really, but "before" is usually scriptable) echo "$TMUX_PANE" > /tmp/my-lynx-pane # in the Vim :! command in the mapping: tmux send-keys -t "$(cat /tmp/my-lynx-pane)" C-r