Ich benutze vim für Bash-Skripte. Manchmal möchte ich keine neue Datei erstellen, ausführbar machen, ausführen und dann entfernen. Ich meine die Skripte, die nur einmal verwendet werden.
Zum Beispiel öffne ich vim und tippe folgendes:
#!/bin/bash
ll | while read line
do
echo $line
done
Ich habe diese Datei nicht gespeichert, sondern verwende nur vim, um das Bash-Scripting zu vereinfachen. Ich weiß, dass ich einen Bash-Befehl über !
in vim ausführen kann . Aber was ist mit dem Ausführen von allem, was sich im Puffer befindet?
command-line
external-command
bash
St.Antario
quelle
quelle
<C-x><C-e>
und beim Schreiben ausführen können, oder?set -o vi
, können SieEsc-v
die Befehlszeile in vi bearbeiten. DannEsc-:wq
ausführen.Antworten:
Ich habe eine ziemlich ausführliche Antwort dazu über Stack-Overflow geschrieben . Die Grundidee besteht darin, dass Sie den Text in Ihrem Puffer in ein externes Programm wie Python oder Bash schreiben können , da es beim Schreibbefehl um das Schreiben und nicht um das Speichern geht. In Ihrem Fall möchten Sie Folgendes tun:
oder
Diese Befehle schreiben buchstäblich nur den Text in Ihrem Puffer direkt in das von Ihnen angegebene Programm
!
, was praktisch ist, da Sie dann keine Datei speichern müssen. Natürlich können Sie auch Folgendes tun:Dadurch wird Ihre Datei gespeichert und dann als Bash-Skript ausgeführt. Sie können wählen, was für Sie sinnvoller ist.
quelle
:w !bash -a test
aber bekam "kann keine Binärdatei ausführen"test
Datei versuche, läuft es gut für mich. Was soll der Befehl tun und was soll ertest
enthalten?test
enthalten sollte ?test
ist nur ein Argument für-a
.test
es sollte eine Akte sein. Ich bin mir nicht sicher, was ich tun soll. Wenn Sie etwas Komplexes ausprobieren, ist es möglicherweise besser, es einfach in einer Datei zu speichern. Es könnte sich lohnen, eine separate Frage zu stellen, damit Sie weitere Einzelheiten angeben können. Es wäre wahrscheinlich auch eine gute Frage für Unix und LinuxSzenario: Sie arbeiten in der Bash-Shell. Stellen Sie zunächst sicher, dass der lokale Bearbeitungsmodus vi lautet:
Wenn Sie nun einen langen Befehl wie den folgenden ausführen, drücken Sie Esc+ v.
Dadurch wird Ihr Befehl in eine temporäre
vi
Sitzung geladen . Jetzt können Sie es nach Belieben bearbeiten und sogar einen weiteren Befehl hinzufügen ...Wenn Sie mit der Bearbeitung fertig sind, geben Sie Folgendes ein Esc
:wq
und die Befehle werden ausgeführt, zum Beispiel:quelle
Esc
schlüsselEsc
Schlüssel !? Wie können sie dann Vim verwenden?Esc
Schlüssel , wenn in einem Terminal Vim läuft.