Estoy usando grep -e Peugeot -e PeuGeot carlist.txtpara buscar a través de carlist.txt y sacar algunos elementos y supuse que eso grep -e Peugeot -e PeuGeot carlist.txt | vilo 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/fooal final si desea editar ese archivo de inmediato.viopera en archivos de texto arbitrarios; los archivos en sí no están directamente asociados convi. (O, como acabo de aprender,vi -harávique opere sobre el contenido destdin;vimhace esto, pero no todas las versiones devido.)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 partirstderrdestdin, por ejemplo:valgrind my_file.out 2>&1 | vi -grepel 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
grepse 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