!
) que puede realizar tres cosas::r
es el comando de Vim para leer. Si lo utilizas sin !
, puedes utilizarlo para obtener el contenido de un archivo. Si tienes un archivo llamado archivo1.txt
en el directorio actual y ejecutas:archivo1.txt
dentro del buffer actual.:r
seguido por un !
y un comando externo, la salida de ese comando será insertada dentro del buffer actual. Para obtener el resultado del comando ls
, ejecuta:curl
:r
también acepta una dirección:cat archivo1.txt
será insertada después de la línea 10.:w
) para pasar el contenido del buffer actual como la entrada estándar (STDIN) a un comando externo. La sintaxis es:node
para ejecutar las expresiones de Javascript para mostrar por pantalla "Hola Vim" y "Vim is asombroso".:w
, Vim utiliza todo el texto del buffer actual, de manera similar al comando global (la mayoría de comandos de la línea de comandos, si no les pasas un rango, solo ejecutan el comando en la línea actual, no en todo el buffer). Si le pasas al comando :w
una dirección específica:node
.:w !node
y :w! node
. Con :w !node
, estás "escribiendo" el texto del buffer actual en un comando externo, en este caso node
. Con :w! node
, estás forzando a guardar un archivo y dándole el nombre de "node".!
, esto puede ser utilizado para filtrar textos. Supongamos que tenemos estos textos:tr
(translate). Ejecuta:.!
ejecuta el filtro del comando en la línea actual.tr '[:lower:]' '[:upper:]'
llama al comando tr
para reemplazar los caracteres de minúsculas a mayúsculas..
(:!tr '[:lower:]' '[:upper:]'
), verás un error.awk
::%!
ejecuta el filtro del comando en todas las líneas (%
).awk "{print $1}"
imprime solo la primera columna.|
de igual manera que lo haces en la terminal. Supongamos que tenemos un archivo con estos elementos de un delicioso desayuno::%!
aplica el filtro a todas las líneas (%
).awk 'NR > 1'
muestra los texto solo desde la columna 2 en adelante.|
encadena esto con el siguiente comando.sort -nk 3
ordena numéricamente (n
) utilizando los valores de la columna 3 (k 3
).column -t
organiza el texto con los espaciados.!
) en el modo normal. Si tienes los siguientes saludos:!j
ejecuta el filtro operador del comando normal (!
) en la línea actual y la línea inferior. Recuerda que es un operador del modo normal, la regla gramática de verbo + sustantivo
se aplica en este caso.tr '[a-z]' '[A-Z]'
reemplaza las letras minúsculas con letras mayúsculas.!iwtr '[a-z]' '[A-Z]'
(ejecutar tr
dentro de la palabra donde está el cursor), verás que se aplica el comando tr
a la línea completa, no a la palabra sobre la que está el cursor.