Wie leite ich die Befehlsausgabe in bash an vim um?


87

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?

Antworten:



38

Du bist ganz nah dran. Sie haben nur einen Charakter vermisst.

ls -la | vim -

10
Nun, technisch sind es zwei Charaktere. ;)
Cory Klein

19

Hier ist ein weiterer Ansatz, der hoffentlich jemandem etwas Neues beibringen soll.

Wenn Sie wissen, dass der Befehl :r !ls -lain 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:

vim -c ':r! ls -la'

Dies entspricht dem Öffnen vimund Ausführen des Befehls :r! ls -la. Dies sollte mit jedem vimBefehl funktionieren , bei dem der Befehl hinter der -cOption steht.



1

Wenn Sie die Ausgabe einfach in eine Textdatei umwandeln möchten, müssen Sie vim nicht aufrufen. Bash schafft es alleine

ls -la > outputfile.txt

1

setlocal buftype=nofile

Dies ist eine gute Option, wenn Sie einen zu ersetzenden Alias ​​erstellen möchten less:

seq 100 | vim +':setlocal buftype=nofile' -

Jetzt müssen Sie das nicht mehr eingeben! beenden.

Eine andere Option ist:

seq 100 | vim +'nnoremap q :quit!' -

so können Sie mit nur beenden q<enter>.


Gute Idee. Auf jeden Fall kürzer als so lange tippen! :)
Kode
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.