Ich versuche, die Ausgabe eines Bash-Befehls in eine neue Datei umzuleiten.
Wenn ich die Pipe wie folgt probiere:
ls -la | vim
Bash zeigt mir die Fehler:
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
Ich weiß, dass ich Vim öffnen und dann verwenden kann:
:r !ls -la
Aber gibt es eine Möglichkeit, dies in bash selbst zu tun, sodass Vim geöffnet wird und die Ausgabe dort automatisch eingefügt wird?
<(ls -la)
ist eigentlich eine Prozessersetzung und keine Befehlssetzung .Du bist ganz nah dran. Sie haben nur einen Charakter vermisst.
quelle
Hier ist ein weiterer Ansatz, der hoffentlich jemandem etwas Neues beibringen soll.
Wenn Sie wissen, dass der Befehl
:r !ls -la
in vim ausgeführt wird, können Sie folgendermaßen vorgehen, um vim zu öffnen und den Befehl direkt nach dem Öffnen von bash auszuführen:Dies entspricht dem Öffnen
vim
und Ausführen des Befehls:r! ls -la
. Dies sollte mit jedemvim
Befehl funktionieren , bei dem der Befehl hinter der-c
Option steht.quelle
Sie können vim anweisen, stdin zu öffnen:
quelle
Wenn Sie die Ausgabe einfach in eine Textdatei umwandeln möchten, müssen Sie vim nicht aufrufen. Bash schafft es alleine
quelle
setlocal buftype=nofile
Dies ist eine gute Option, wenn Sie einen zu ersetzenden Alias erstellen möchten
less
:Jetzt müssen Sie das nicht mehr eingeben! beenden.
Eine andere Option ist:
so können Sie mit nur beenden
q<enter>
.quelle