Führen Sie die Auswahl aus dem Skript in Vim aus

10

Ich versuche, vim in meinen Hauptarbeitsablauf zu integrieren. Ein wichtiger Knackpunkt für mich war das interaktive Bearbeiten und Ausführen von Programmen / Skripten.

Zum Beispiel, weil ich derzeit in test.py

vimme %Vor%

Ohne vim zu verlassen, wie würde ich:
a) führe das ganze Skript aus, ohne vim zu verlassen b) laufe einfach "print ('hallo')"

    
Charles 27.10.2016, 16:20
quelle

3 Antworten

15

Kommentatoren und die andere Antwort haben gezeigt, wie man eine Datei von vim aus ausführt. Aber sie beschönigten einige wirklich mächtige Möglichkeiten. Ich möchte erklären, wie einige von denen genauer arbeiten.

Die einfachste Möglichkeit, ein Python-Skript in vim auszuführen, besteht darin, einfach den Python-Interpreter für die Datei aufzurufen, z. B.

%Vor%

oder, wie ich es vorziehe, um sicherzustellen, dass es keine ungespeicherten Änderungen gibt,

%Vor%

Aber es ist nicht einmal notwendig, eine Datei zu haben, um ein Python-Skript in vim auszuführen. Der Grund dafür ist, dass :w ! = Save! :w bedeutet write . Wenn kein Argument angegeben wird, wird zufällig in die Datei geschrieben, die Sie bearbeiten. Sie können jedoch in STDOUT, in eine andere Datei oder sogar in ein anderes Programm schreiben. Wenn Sie also Ihren Puffer als Python-Code ausführen möchten, ohne eine Datei zum Speichern und Ausführen zu haben, können Sie einfach Folgendes tun:

%Vor%

Dies bedeutet Schreiben den aktuellen Puffer in das externe Programm "python". Dies sendet buchstäblich den Inhalt Ihres Puffers direkt an Python.

Hier wird es jetzt wirklich cool. In vim ist :w ein "ex-Befehl", z. ein Befehl, den Sie über die vim-Befehlszeile ausführen, die ursprünglich aus ex stammt, einem sehr alten zeilenbasierten Unix-Text Editor. Das Tolle an ex-Befehlen ist, dass sie, da sie alle linienbasiert sind, direkt angeben können, auf welche Zeilen der Befehl angewendet werden soll. Zum Beispiel:

%Vor%

schreibt nur Zeile zwei in die Datei "myfile.txt". Sie können sogar einen Bereich, z.

%Vor%

schreibt die Zeilen 2-7 in "myfile.txt". Dies bedeutet, dass wir mit Ihrem Beispiel

ausführen können %Vor%

um nur

auszuführen %Vor%

Um dies bequemer zu machen, können Sie den visuellen Modus verwenden, um jede Zeile auszuwählen, die Sie ausführen möchten, die automatisch den richtigen Bereich für Sie ausfüllt. Dies wird aussehen wie

%Vor%

Um das bequemer zu machen, würde ich empfehlen, etwas wie

hinzuzufügen %Vor%

zu deinem .vimrc . Dann können Sie visuell auswählen, was Sie wollen, und es als Python-Code ausführen, indem Sie

eingeben %Vor%

(Ersetze \ mit allem, was du als Anführer eingerichtet hast). Du könntest auch

machen %Vor%

oder

%Vor%

abhängig davon, ob Sie in eine Datei speichern möchten oder nicht.

    
DJMcMayhem 27.10.2016, 16:44
quelle
2

Sie können ein Programm von vim ausführen, indem Sie :! , d. h. :!python3 % verwenden, um Ihr aktuelles Skript auszuführen.

Wenn Sie einen Schlüssel an ihn binden möchten, wäre ein weiterer einfacher Weg, makeprg auf Ihre ausführbare Python-Datei zu setzen: :set makeprg=python3 und binden Sie dann einen Schlüssel an :make<cr> . In diesem Fall würde ich autocmds einrichten, die den makeprg abhängig vom Dateityp umschalten.

Wenn Sie eine einfache Anweisung ausführen möchten, können Sie Pythons -c switch verwenden:

:!python3 -c 'print("Hello world")' , oder Sie könnten einfach :!python3 ohne Argumente ausführen, die in eine REPL fallen gelassen werden, ohne Vim zu verlassen.

    
L3viathan 27.10.2016 16:28
quelle
2

Erstellen Sie eine Funktion für einen Bereich, wie in diese Frage:

%Vor%

Erstellen Sie ein Mapping für den visuellen Modus:

%Vor%

Dann können Sie einen Bereich auswählen und Control - F6 drücken. Der Zeilenbereich wird von python ausgeführt. Das Ergebnis wird im Befehlsbereich angezeigt.

    
Ruslan Osmanov 27.10.2016 16:42
quelle

Tags und Links