Sie können die Befehlsersetzung verwenden:
vim $(find -name somefile.txt)
oder
find -name somefile.txt -exec vim {} \;
Versuchen Sie Folgendes:
- vim starten
- verwenden Sie in vim Folgendes:
:r!find /<path> -name 'expression'
Die Ergebnisse sollten in vim erscheinen, wenn die Suche abgeschlossen ist.
Oder
Versuchen Sie:
find /<path> -name > results.txt
vim results.txt
Wenn es Ihnen nichts ausmacht, den Befehl erneut auszuführen:Drücken Sie Nach oben und hängen Sie eine xargs
an Befehl. Oder verwenden Sie die Verlaufsersetzung und führen Sie
!! | xargs vim # won't work with file names containing \'" or whitespace
!! | xargs -d \\n vim # GNU only (Linux, Cygwin)
Es gibt eine einfache Möglichkeit, die Ausgabe eines Befehls zu speichern, der in ksh und zsh, aber nicht in bash funktioniert (es erfordert, dass die Ausgabeseite einer Pipeline in der übergeordneten Shell ausgeführt wird). Leiten Sie den Befehl in die Funktion K
(zsh-Definition unten), die k speichert seine Ausgabe in der Variablen $K
.
function K {
K=("${(@f)$(tee /dev/fd/3)}") 3>&1;
}
find … |K
vim $K
Das automatische Speichern der Ausgabe jedes Befehls ist mit der Shell allein nicht wirklich möglich, Sie müssen den Befehl in einem emulierten Terminal ausführen. Sie können dies tun, indem Sie script
ausführen (ein BSD-Dienstprogramm, aber auf den meisten Unices verfügbar, einschließlich Linux und Solaris), das die gesamte Ausgabe Ihrer Sitzung in einer Datei speichert (es ist immer noch ein wenig Aufwand erforderlich, um die letzte Eingabeaufforderung im Typoskript zuverlässig zu erkennen).