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

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

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`

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.