Navegar por el historial de la terminal puede ser difícil con la selección estándar del ratón, especialmente para salidas complejas o cuando necesitas seleccionar partes específicas del texto. Combinando las capacidades de pipe de Kitty terminal con la potente navegación de Vim, puedes explorar, buscar y copiar contenido de tu historial de terminal sin esfuerzo.
Requisitos
Antes de comenzar, asegúrate de tener instalado lo siguiente:
- Kitty Terminal: Un emulador de terminal rápido, con muchas funciones y basado en GPU
- Instalación:
sudo pacman -S kitty
(Arch Linux) - Otras distribuciones: https://sw.kovidgoyal.net/kitty/binary/
- Instalación:
- Vim: El omnipresente editor de texto
- Instalación:
sudo pacman -S vim
(Arch Linux) - La mayoría de las distribuciones Linux vienen con Vim preinstalado o fácilmente disponible en sus repositorios de paquetes
- Instalación:
También necesitarás una familiaridad básica con los comandos de navegación de Vim para la mejor experiencia, aunque incluso los principiantes en Vim pueden beneficiarse de esta configuración.
El problema con la selección estándar de la terminal
Seleccionar texto en una terminal con el ratón puede ser frustrante cuando:
- Necesitas seleccionar texto que abarca múltiples pantallas
- Quieres seleccionar texto con una alineación de columnas precisa
- Necesitas buscar contenido específico en una salida larga
- Prefieres la navegación basada en teclado
Configurando Vim para el historial de Kitty
La solución combina la función pipe de Kitty terminal con Vim para crear una experiencia fluida de navegación por el historial.
1. Configurar Kitty
Añade esta línea a tu archivo ~/.config/kitty/kitty.conf
:
map alt+e pipe @screen_scrollback overlay nvim - -c 'set filetype=scrollback' -c 'source ~/.vim/ftplugin/scrollback.vim'
Esto asigna Alt+E para canalizar el buffer de historial de la pantalla actual a Vim en una ventana superpuesta.
2. Crear una configuración de Vim específica para el historial
Crea un archivo en ~/.vim/ftplugin/scrollback.vim
con el siguiente contenido:
set clipboard^=unnamedplus
set signcolumn=no
set nolist
set laststatus=0
set scrolloff=0
set nowrapscan
set relativenumber
xnoremap <buffer> <cr> "+y
nnoremap <buffer> q <cmd>q!<cr>
nnoremap <buffer> i <cmd>q!<cr>
nnoremap <buffer> I <cmd>q!<cr>
nnoremap <buffer> A <cmd>q!<cr>
nnoremap <buffer> H H
nnoremap <buffer> L L
if exists(':HideBadWhiteSpace')
HideBadWhiteSpace
endif
call cursor(line('$'), 0)
silent! call search('\S', 'b')
silent! call search('\n*\%$')
execute "normal! \<c-y>"
Cómo funciona
- Presiona Alt+E mientras estás en la terminal Kitty
- Tu buffer de historial se abre en Vim
- Usa los comandos de navegación estándar de Vim para moverte:
j/k
para mover arriba/abajo/
para buscar textov
para iniciar selección visual
- En modo visual, presiona Enter para copiar el texto seleccionado al portapapeles
- Presiona q para salir y volver a tu terminal
Características clave de esta configuración
- Navegación eficiente: Usa los potentes comandos de movimiento de Vim
- Copia fácil: Selecciona visualmente + Enter copia al portapapeles
- Salida rápida: Presiona ‘q’ o intenta entrar en modo inserción para salir
- Números de línea relativos: Facilita saltar a líneas específicas
- Posicionamiento: Posiciona automáticamente el cursor al final del contenido
Explicación de la configuración
set clipboard^=unnamedplus
: Usa el portapapeles del sistema para copiarset relativenumber
: Muestra números de línea relativos para facilitar la navegaciónxnoremap <buffer> <cr> "+y
: Asigna Enter en modo visual para copiar al portapapelesnnoremap <buffer> q <cmd>q!<cr>
: Asigna ‘q’ para salirnnoremap <buffer> i/I/A <cmd>q!<cr>
: Sale cuando intentas entrar en modo inserción- El posicionamiento del cursor al final ayuda a comenzar desde la salida más reciente
Este enfoque transforma la forma en que interactúas con la salida de la terminal, facilitando la extracción y el uso de información de tu historial de comandos. Ya seas un desarrollador trabajando con logs, un administrador de sistemas analizando salidas de comandos, o simplemente un usuario avanzado que prefiere flujos de trabajo basados en teclado, esta combinación de Vim+Kitty ofrece una experiencia superior de navegación por el historial.
¡Pruébalo y observa cómo tu flujo de trabajo en la terminal se vuelve más eficiente y agradable!