- Mediante las diversas funciones del comando
less y combinaciones de atajos, se puede realizar de forma eficiente la navegación por archivos, la búsqueda, el filtrado, los marcadores y el cambio de opciones
- Se pueden abrir varios archivos al mismo tiempo y moverse, agregar o eliminar archivos con los comandos
:n, :p, :e, :d
- Aprovechando las funciones de búsqueda (
/, ?, n, N) y filtrado (&, &!), se pueden encontrar o excluir rápidamente patrones específicos
- Con los marcadores (
m, ') y la función de emparejamiento de paréntesis, se simplifica el desplazamiento dentro de documentos largos o archivos de código
- Mediante el cambio de opciones en ejecución (
-S, -R, -N, etc.) y la ejecución de comandos externos (!), es posible ajustar el entorno al instante sin salir de less
Manejo de varios archivos
less no es una herramienta que solo se use al final de un pipeline; también puede abrir varios archivos directamente como argumentos
- Ejemplo:
less file1 file2 file3
- Incluso durante la ejecución, se puede agregar un archivo nuevo con el comando
:e file.h
- Con
:n se puede ir al archivo siguiente, con :p al archivo anterior, y con :x o :rewind al primer archivo
- Con el comando
:d se puede eliminar el archivo actual de la lista
Funciones de navegación
- Si escribes número + G, como
3141G, puedes ir a un número de línea específico
- Con número + %, como
75%, puedes saltar a una posición porcentual dentro del archivo
- Con
/patrón haces una búsqueda hacia adelante, con ?patrón una búsqueda hacia atrás, y con n/N te mueves al resultado siguiente/anterior
!patrón sirve para buscar líneas que no coincidan, * para buscar a través de varios archivos, @ para iniciar la búsqueda desde el primer archivo, y @* para buscar en todos los archivos completos
Funciones de filtrado
- Con
&patrón se muestran solo las líneas que coincidan con ese patrón, funcionando como un grep interno
- Con
&!patrón se muestran solo las líneas que no coincidan con el patrón, lo que resulta útil al revisar archivos de registro
Marcadores y emparejamiento de paréntesis
m + una letra para establecer un marcador, y ' + una letra para ir a esa ubicación
- Ejemplo: usar
mo para la sección OPTIONS y me para la sección EXAMPLES, y luego moverse con 'o, 'e
- Si un paréntesis como
(, [, { aparece en la primera línea de la pantalla, al introducir ese mismo paréntesis se salta a su pareja correspondiente
- A la inversa, si un paréntesis de cierre está en la última línea, se mueve al paréntesis de apertura
- También es posible definir pares de paréntesis personalizados con
alt+ctrl+b, etc.
Cambio de opciones y ejecución de comandos externos
- Durante la ejecución, al introducir opciones después de
-, se puede cambiar la configuración de inmediato
-S: alternar ajuste de línea
-G: resaltar búsqueda
-i/-I: configuración de distinción entre mayúsculas y minúsculas
-R: mostrar colores ANSI
-N/-n: mostrar/ocultar números de línea
- Con el comando
! se pueden ejecutar comandos externos (!date, !bc, etc.)
Variables de entorno y otras funciones
- Las opciones de uso frecuente se pueden guardar en la variable de entorno
$LESS
- Ejemplo:
LESS="-RNe" → mostrar colores, mostrar números de línea y salir automáticamente al llegar al final del archivo
- Con el comando
v se puede abrir el archivo actual en el editor $VISUAL
- Con
o u O se puede guardar en un archivo el contenido leído desde la entrada estándar
less admite una función de salto de etiquetas basada en ctags, aunque se usa con poca frecuencia
1 comentarios
Comentarios en Hacker News
Sorprende que se hayan olvidado de la función
follow. Al principio se siente como una UX rara, pero una vez que te acostumbras, muchas veces es mejor quetailSi lo ejecutas con
less +F, sigue y muestra en tiempo real un flujo de entrada o un archivo. Con<C-c>dejas de seguirlo y puedes navegar como enlessnormal; luego, si presionasFotra vez (mayúscula), reanuda el seguimientokubectl logs | less +F), si presionas<C-c>, termina todo el proceso del pipe y ya no puedes reanudar el seguimiento conF. Enlessexiste la alternativa de detener el seguimiento con<C-x>, pero la mayoría de los shells interceptan esa teclatail, puedes presionar Enter para agregar una línea en blanco debajo de la última línea. Como sirve para distinguir resultados de varias ejecuciones, sigo usandotailpor esa sola funciónLa opción
-Xo--no-initevita que se limpie la pantalla al salir. Yo normalmente prefiero mantener la pantalla para poder revisar contenido anterior o copiar y pegar-Xde vez en cuando, puedes revisar el tip de este hilo-E, sale de inmediato cuando la salida es más pequeña que el tamaño de la terminal. Suelo usar seguido “less -SEXIER” al combinar varias opciones. Además, es fácil de recordarAl depurar logs largos, uso
¶ filtrar solo las partes que quiero leer y&!para excluir lo innecesario. También soporta expresiones regulares. A veces puede ser lento, pero sirve mucho para filtrar al vueloHay dos tips útiles
La opción
-Lomite el preprocesamiento del archivo de entrada, evitando que nombres de logs rotados comologfile.1,logfile.2se procesen erróneamente connroffAdemás, al buscar, si introduces
Ctrl-Rcomo primer carácter, puedes buscar como cadena literal y no como expresión regularPuedes configurar atajos con el archivo
~/.lesskey. Yo vinculéspara hacer scroll hacia atrás, así que condyspuedo hacer page up/down rápido con una sola manoEl
lesspor defecto de macOS no trae esta función, así que hay que instalarlo con Homebrew (configuración de ejemplo, explicación relacionada)Na next-file. Que macOS no tenga lesskey es realmente incómodoEl
mande OpenBSD le pasa etiquetas aless, así que puedes ir directo a una sección específica con algo como:t test. Es una función interesante, pero en la práctica casi nunca la uso.La interfaz consistente de simplemente buscar con
/me parece más intuitiva.Como referencia, los BSD usan el conjunto de macros
mdocpara crear documentación semántica, y OpenBSD usa el programamandocpara renderizarla (documentación de mdoc)Puedes configurar
^qpara salir delesssin limpiar la pantalla, mientras queqnormal sigue saliendo y limpiando la pantalla como siempreDebes ejecutar
lesssin-X, y resulta especialmente útil cuando necesitas consultar la salida anterior, como congit loglesstambién tiene una función para hacer pipe a comandos externos.Por ejemplo, puedes poner una marca con
may con|aenviar a un comando externo el contenido desde la posición actual hasta esa marca.Sirve para guardar partes de noticias o correos electrónicos.
Además, con la opción
-jpuedes ajustar cuántas líneas debajo de la parte superior de la pantalla se muestra un resultado de búsquedagit log. Después de elegir un commit, ejecutogit showcon un atajo, o incluso hago tareas de fixup directamente.Uso el debug trap de
bashykeyd-application-mapperpara detectar el comando en ejecución en ese momento, extraer el hash del commit y procesarlo con un scriptEl motor de expresiones regulares de
less(1)es demasiado lento. Cuando trabajo con archivos grandes, busco congreporipgrepy luego paso ese resultado alesspara verloCon la tecla
spuedes guardar los datos de un pipe en un archivo. Es mucho más cómodo que copiar y pegarless, y solo si el resultado me sirve, lo guardo cons.También podría usar
tee, pero eso siempre deja un archivo, así que cuando no hace falta resulta ineficiente