Come aprire un file in vim usando pipe


15

Posso usare il locatecomando estremamente spesso.

Quindi se eseguo il seguente comando.

locate updatedb | head -1

Quindi mi dà il O/p

/usr/updatedb.conf

Mi chiedo se esiste un comando del genere che può farmi aprire direttamente quel file?

Spero in qualcosa del genere.

locate updatedb | head -1 | vim

Risposte:


22

Hai quasi finito:

$ locate updatedb | head -1 | xargs vim

a volte (sotto determinati terminali) è necessario ripristinare il terminale dopo la modifica.

$ reset

2
Molto probabilmente la tua versione di locateavere -l/ --limit/ -nopzione non ti serve head -1:locate -n 1 updatedb | xargs vim
Dmitry Alexandrov il

1
Perché si verifica questa corruzione terminale? C'è un modo per evitarlo?
Jacobo de Vera,

16

Come editor interattivo, Vim ha bisogno sia di stdin che di stdout, quindi usarlo all'interno di una pipe è problematico e fa avvertire Vim di questo. Per un solo 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`

Questo funziona anche su stringhe con spazi, il che è utile per nomi di file come "versione 2 - final.csv".
Alex Moore-Niemi,

0

So che questa è una cattiva soluzione ma l'ho usata per creare alias in .bashrc:

locate updatedb  > /tmp/vimForTempDontTouch && vim /tmp/vimForTempDontTouch

Lati negativi: brutti

Vantaggio: nessun effetto collaterale con il terminale

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.