Wie verwende ich vim-slime innerhalb einer einzelnen tmux-Sitzung?


9

Ich versuche, ipython und vim über eine einzige tmux-Sitzung mit dem beliebten vim-Plugin "vim-slime" zu integrieren. Das Problem ist, dass ich es zwar zum Laufen bringen kann, vorausgesetzt, dass vim in einem separaten tmux-Fenster geöffnet ist (oder gvim verwendet), aber wenn ich versuche, Codezeilen an einen anderen Bereich im selben Fenster zu senden, werde ich bestenfalls fertig Senden an die vim-Sitzung, die ich gerade verwende.

Was ich in meinem Setup wirklich möchte, ist vim auf der rechten Seite des Bildschirms, ipython oben links und eine reguläre Befehlszeile unten links. Ich möchte nicht wirklich mehrere Sitzungen und Fenster öffnen und verwalten.

Gibt es eine einfache Möglichkeit, die ich aufgrund meiner relativen Unerfahrenheit einfach nicht kenne?

Antworten:


6

Okay, ich hatte genau das gleiche Problem, was mich zu dieser Frage brachte. Ich habe eine geteilte Sitzung, VIM-Code links und eine Schema-Eingabeaufforderung rechts.

Mein Problem war, ich dachte, der Sitzungsname sei der Socket-Name, aber das sind zwei verschiedene Dinge. Ich hatte die Sitzung für das 0. Fenster '0' genannt, aber tatsächlich heißt das SOCKET trotz des von mir angegebenen Sitzungsnamens 'Standard'.

So erhalten Sie eine Liste der ausgeführten tmux-Sockets: lsof -U | grep "^tmux"
Ich habe dies anhand dieser Antwort festgestellt:
/programming/11333291/is-it-possible-to-find-tmux-sockets-currently-in-use

Das Obige war hilfreich, um die tatsächlichen Namen der Steckdosen zu sehen.

Das ist es, was Sie in die erste Eingabeaufforderung einfügen. Ich habe '0' gesetzt, was der Name meiner Sitzung war, aber es hat nicht funktioniert. 'default' wird dort benötigt, obwohl ich die Sitzung benannt habe.

Dann gab ich an der zweiten Eingabeaufforderung ein (Index-0-Fenster, Index-1-Bereich) ::
0.1

Voila! Schließlich! Es hat funktioniert. Geniale Bearbeitung jetzt nebeneinander!


1
Das hat es gelöst!
Ram

1

Sie müssen den Zielbereich mit <c-c>voder ändern :SlimeConfig. Die Standardeinstellung ist :"aktuelles Fenster, aktueller Bereich". Siehe :help slime-tmux.

Stattdessen, gehen Sie zum tmux Bereich Sie den Text (der mit ipython ausgeführt wird ), und von der Shell Laufe senden möchten echo $TMUX_PANEoder tmux run "echo #{pane_id}"auf die richtige Scheibe ID zu finden .


Funktioniert bei mir nicht <C-c>v Ruft nur den VISUAL-Modus auf. Außerdem glaube ich, dass $ TMUX_PANE nicht die gesuchten Informationen sind. Durch Drücken von <C-b>x(Befehl zum Beenden eines Fensters) wird eine Bestätigungsanforderung angezeigt, die die Nr. Des Fensters enthält. Diese Nummer unterscheidet sich von $ TMUX_PANE und scheint die richtige Information zu sein, um die Anforderung des OP zu erfüllen
Titou

0
  1. Starten Sie tmux.
  2. Ctrl-b % vertikal teilen.
  3. Ctrl-b [left arrow] zum linken Bereich bewegen
  4. Ctrl-b "linke Scheibe horizontal teilen. Sie haben jetzt 3 Befehlszeilen.
  5. Ctrl-b [up arrow]um zum oberen linken Bereich zu gelangen, gefolgt von ipython.
  6. Ctrl-b [right arrow] zum rechten Bereich bewegen.
  7. Starten Sie vim auf Ihrem Python-Code.
  8. Senden Sie eine Zeile mit Ctrl-C Ctrl-C, akzeptieren Sie den Socket-Namen als defaultund geben Sie ein :0.0, um den IPython-Bereich auszuwählen.

defaultund 0:0sind der Socket-Name bzw. die Fenster-ID.


1
Damit wird das in meinem OP beschriebene Problem nicht behoben.
Ram

@Ram Ja, das hat es getan: Nach den Schritten, die Simon gegeben hat, erhalte ich genau die Konfiguration, nach der das OP gefragt hat.
Titou
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.