Sie sind fast fertig:
$ locate updatedb | head -1 | xargs vim
Manchmal (bei bestimmten Terminals) müssen Sie das Terminal nach der Bearbeitung zurücksetzen.
$ reset
Als interaktiver Editor benötigt Vim sowohl stdin als auch stdout, daher ist die Verwendung innerhalb einer Pipe problematisch und veranlasst Vim, davor zu warnen. Für nur eine einzelne Datei löst die Prozessersetzung dies leicht:
vim "$(locate updatedb | head -1)"
Sie können auch Backticks verwenden, und das funktioniert sogar innerhalb von Vim selbst:
:edit `locate updatedb | head -1`
Verwenden Sie zusätzlich zu der obigen Antwort die xargs-Option -o
, um die von Jacobo de Vera im Kommentar angegebene "Terminal Corruption" zu vermeiden oder --open-tty
vim davon ausgehen lassen, dass die Eingabe von einem Terminal kommt, nicht von stdin.
$ locate updatedb | head -1 | xargs -o vim
Siehe:https://unix.stackexchange.com/a/44428/307359