Cómo abrir un archivo en vim usando pipe

15

Puedo usar el locatecomando con mucha frecuencia.

Entonces, si ejecuto el siguiente comando.

locate updatedb | head -1

Entonces me da el O/p

/usr/updatedb.conf

Me pregunto si existe algún comando que me permita abrir ese archivo directamente.

Estoy esperando algo como esto.

locate updatedb | head -1 | vim
Krishna
fuente

Respuestas:

22

Ya casi has terminado:

$ locate updatedb | head -1 | xargs vim

a veces (bajo ciertos terminales) necesita restablecer el terminal después de la edición.

$ reset
periket2000
fuente
2
Lo más probable es que su versión locatetenga -l/ --limit/ -nopción, así que no necesita head -1:locate -n 1 updatedb | xargs vim
Dmitry Alexandrov
1
¿Por qué ocurre esta corrupción terminal? Hay alguna manera de evitarlo?
Jacobo de Vera
16

Como editor interactivo, Vim necesita stdin y stdout, por lo que usarlo dentro de una tubería es problemático y hace que Vim advierta sobre esto. Para un solo archivo, la sustitución de procesos resuelve esto fácilmente:

vim "$(locate updatedb | head -1)"

También puedes usar backticks, y eso incluso funciona dentro del propio Vim:

:edit `locate updatedb | head -1`
Ingo Karkat
fuente
Esto también funciona en cadenas con espacios, lo cual es bueno para nombres de archivo como "versión 2 - final.csv".
Alex Moore-Niemi
0

Sé que esta es una mala solución, pero la usé para crear alias en .bashrc:

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

Desventajas: feo

Ventaja: sin efectos secundarios con terminal

Tebe
fuente