Kopieren Sie von vim auf die Python-Konsole in tmux

8

Ich habe tmux installiert.

tmux -V
tmux 2.3

Stellen Sie meine Konfigurationsdatei ein.

cat  ~/.tmux.conf
set -g mouse on

Geben Sie tmux ein und öffnen Sie zwei vertikale Fenster, öffnen Sie die Python3-Konsole links und öffnen Sie vim rechts.

Geben Sie hier die Bildbeschreibung ein

Bewegen Sie nun meinen Cursor mit der Maus am Anfang der ersten Zeile rechts.
Gehen Sie in den normalen Modus und geben Sie ein 2yy+, um zwei Zeilen in mein +Register zu kopieren .
Bewegen Sie den Cursor im linken python3 consoleFenster. Wie kann ich Inhalte in +Register in die Python-Konsole einfügen ? @ Kent, machen Sie, was Sie sagen: 1.
Bewegen Sie den Cursor am Anfang der ersten Zeile und geben Sie "+2Y
2. Bewegen Sie den Cursor in das linke Fenster und klicken Sie mit der mittleren Maustaste, es passiert nichts. 3. ctrl+bDrücken Sie dann die ]Taste.

Geben Sie hier die Bildbeschreibung ein

coder_view
quelle
vim-tmux-clipboard Plugin könnte helfen.
Amadan

Antworten:

3

zuerst sollte dein vim mit +clipboardsee kompiliert werdenvim --version | grep 'clipboard'

Zum Kopieren (oder Löschen) in ein beliebiges vim-Register können Sie den folgenden Syntex verwenden

  • "<register name><oprator><motion>(siehe :h registers) z
    1. "ayy(aktuelle Zeile im Register kopieren a) oder
    2. "bdd(aktuelle Zeile im Register löschen b) oder
    3. "*ce(Löschen Sie bis zum Ende der aktuellen Arbeit und setzen Sie den Inhalt in das Register *mit c, um in den Einfügemodus zu gelangen
  • um die ganze Zeile zu kopieren, können Sie verwenden yy
  • und die System-Zwischenablage ist entweder +oder *(abhängig vom Betriebssystem) zugeordnet.

So kopieren Sie die gesamte Zeile in die Zwischenablage des Systems

  • "*yyoder "+yy(je nach Betriebssystem)

oder um 2 Zeilen zu kopieren

  • "*2yyoder "+2yy(um die aktuelle und die Zeile nach der aktuellen Zeile zu kopieren)

Sobald der Inhalt in die Zwischenablage des Systems kopiert wurde, können Sie ihn mit ( command + voder ctrl + shift + v) in tmux einfügen.

oder um die Systemzwischenablage mit dem tmux-Einfügepuffer zuzuordnen, siehe /unix/67673/copy-paste-text-selections-between-tmux-and-the-clipboard#72340

Tripurari Shankar
quelle
1

2yy+bin NICHT kopiert zwei Linien in +reg statt, es zerrt zwei Linien zu "reg, bewegt dann den Cursor zum ersten nicht-leeren Zeichen in der nächsten Zeile

Sie können auf der vim-Seite Folgendes tun: "*2YKlicken Sie dann mit der Maus mit der mittleren Maustaste auf die Python-Konsole.

  • Oder wählen Sie einfach die Zeilen aus, die Sie in vim mit der Maus kopieren möchten, und klicken Sie dann mit der mittleren Maustaste in die Python-Konsole
Kent
quelle
Ich kann Middle-Clic auf gedit drücken, um Zeilen darin einzufügen. Ich weiß nicht, warum ich es nicht im linken Fenster einfügen kann.
coder_view
Sollte ich eine Konfiguration in ~ / .tmux.conf schreiben?
coder_view
1

Ich mochte mit der akzeptierten Lösung nicht ganz, dass es von einer grafischen Umgebung für die Zwischenablage abhängt, da dies nicht funktioniert, wenn vimnicht auf die Zwischenablage zugegriffen werden kann, was bei sshVerbindungen fast immer der Fall ist . Also habe ich eine andere Lösung gefunden:

Anstatt die externe Zwischenablage zu verwenden, vimkann der Text durch Weiterleiten direkt in tmuxden Einfügepuffer übergeben werden

tmux load-buffer -

Danach können Sie den Inhalt des Puffers mit prefix + ]in den aktiven Bereich tmuxeinfügen.

Es gibt verschiedene Möglichkeiten, den Text von an vimzu übergeben tmux:

# to write the current line into the tmux buffer:
:.w !tmux load-buffer -

# to write all *lines* within the visual selection into the tmux buffer:
:'<,'>w !tmux load-buffer -

# to pipe the content of a register (e.g. from a previous selection) into the buffer:
# @" being the unnamed register, @0 - @9 the numbered registers, and so on
:call system('tmux load-buffer -', @")

Mit können tmux paste-bufferSie sogar gleichzeitig das Einfügen in den richtigen Bereich auslösen:

# assuming the python pane is at :0.0
:call system('tmux load-buffer -; tmux paste-buffer -t :0.0', @")

Sie können jetzt auch einfach die letzte Zeile einer Taste zuordnen, um den visuell ausgewählten Text an das pythonFenster zu senden .

Acran
quelle