Estoy usando grep -e Peugeot -e PeuGeot carlist.txt
para buscar a través de carlist.txt y sacar algunos elementos y supuse que eso grep -e Peugeot -e PeuGeot carlist.txt | vi
lo canalizaría por mí, pero esto es lo que obtengo:
Vim: Warning: Input is not from a terminal
Vim: Error reading input, exiting...
Vim: preserving files...
Vim: Finished.
:read !grep -e Peugeot -e PeuGeot carlist.txt
.:read !cmd...
incluirá la salida de cmd ... en el archivo (en la ubicación del cursor)grep ... > /tmp/foo
. Puede agregar&& vi /tmp/foo
al final si desea editar ese archivo de inmediato.vi
opera en archivos de texto arbitrarios; los archivos en sí no están directamente asociados convi
. (O, como acabo de aprender,vi -
harávi
que opere sobre el contenido destdin
;vim
hace esto, pero no todas las versiones devi
do.)Respuestas:
Ejecutar vi o vim con '-' como argumento hace que lea el archivo para editarlo desde la entrada estándar. Por lo tanto:
Hará lo que necesite.
fuente
stdin
. En algunos casos, tendrá que volver a dirigir a partirstderr
destdin
, por ejemplo:valgrind my_file.out 2>&1 | vi -
grep
el color de búsqueda (compuesto por caracteres no imprimibles) dentro de Vim? Siempre puedes hacer una búsqueda en Vim.Debe usar la redirección de salida :
Además, creo que tu
grep
se puede mejorar:fuente
Además
vim -
, también puede usar la sustitución de procesos usando la<(command)
sintaxis, por ejemplo:Ver también:
fuente
La redirección de salida también se puede usar así:
Incluso se pueden redirigir múltiples salidas de comandos, como si se hubieran guardado en archivos separados:
fuente
En
~/bin/r
:en
~/.vimrc
:Entonces:
y tengo
en mi
~/.bashrc,
tanfuente
Hay muchas formas efectivas de hacer lo que desea, ya sea dentro de vi (m) o fuera de vi (m).
Ejecute su comando, produzca un archivo (temporal), luego edite el archivo ( vea la respuesta de Joseph R. )
Ejecute su comando (en segundo plano) para producir un archivo temporal y edite el archivo, usando ": e!" para actualizar su archivo a medida que se produce (esto es útil para archivos de registro y otros archivos producidos por otro proceso, por ejemplo, cron?),
Ejecute vi (m), y ejecute un proceso secundario para crear el archivo temporal, y luego léalo,
O simplemente cambie al archivo,
Ejecute vi (m) y use la doble explosión "!!" para que vi ejecute el comando secundario, tome los resultados y los inserte en la ubicación actual (sobrescribe la línea actual, así que asegúrese de tener una línea en blanco),
Y ahora puede escribir el archivo (si lo desea) en cualquier nombre de archivo,
Y la respuesta de Petr Uzel también es buena,
Que lee de stdin
fuente