Hai quasi finito:
$ locate updatedb | head -1 | xargs vim
a volte (sotto alcuni terminali) è necessario reimpostare il terminale dopo la modifica.
$ reset
Come editor interattivo, Vim ha bisogno sia di stdin che di stdout, quindi usarlo all'interno di una pipe è problematico e fa avvisare Vim di questo. Per un singolo file, la sostituzione del processo risolve facilmente questo problema:
vim "$(locate updatedb | head -1)"
Puoi anche usare i backtick, e questo funziona anche all'interno di Vim stesso:
:edit `locate updatedb | head -1`
Oltre alla risposta sopra, per evitare la "corruzione del terminale" dichiarata da Jacobo de Vera nel commento, usa l'opzione xargs -o
o --open-tty
per far supporre a vim che l'input provenga da un terminale, non da stdin.
$ locate updatedb | head -1 | xargs -o vim
Vedere:https://unix.stackexchange.com/a/44428/307359