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.