Vim: Customización y plugins
Configurar el editor de texto Vim para un entorno de desarrollo puede ser una tarea desafiante para quienes están acostumbrados a interfaces gráficas de usuario más tradicionales. Sin embargo, esta elección no es en vano, ya que Vim ofrece una experiencia única y altamente productiva para programadores y desarrolladores. Su eficiencia, personalización y riqueza de funciones lo convierten en una opción popular entre aquellos que buscan un enfoque de edición de código más receptivo y basado en teclado.
En este artículo, exploraremos paso a paso cómo configurar Vim para un entorno de desarrollo, aprovechando al máximo sus funciones avanzadas y adaptándolo a las necesidades individuales de cada desarrollador. Si estás listo/a para llevar tu productividad al siguiente nivel y dominar el arte de la edición de texto basada en comandos, esta guía es el punto de partida ideal para sumergirse en el fascinante mundo de Vim.
¿Cómo configurar Vim?
Ya sabemos que Vim es un editor que no tiene entorno gráfico, es decir, no tiene interfaces de configuración. Entonces, ¿cómo funciona la configuración del editor?
A los desarrolladores del editor se les ocurrió la idea de utilizar un archivo escrito en el lenguaje de programación propio de Vim (llamada VimScript), que definiría sus escenarios y comportamientos. Este archivo es opcional y debe crearse en la carpeta de usuario para sistemas Linux y OSX con el nombre de .vimrc. Aquí es donde se almacenarán todas las opciones del editor.
Para comenzar a configurar Vim, ejecuta el comando en la carpeta del usuario:
vim .vimrc
Vim iniciará un archivo vacío en la memoria (si no hubiera uno ya existente).
Es probable que tu pantalla sea un archivo vacío con el cursor en la parte superior. Para comenzar, habilitemos las líneas numeradas en el editor para facilitar la navegación en archivos grandes. Escribe esto en las primeras líneas:
set encoding=utf-8 " Define encoding para leer los archivos
syntax on " Habilita syntax highlight
set cursorline " Destaca la línea en la que está el cursor
set number " Agrega números a las líneas
Nota: Los comentarios se hacen con comillas dobles (“).
Después de cerrar y abrir tu editor, notarás que ahora las líneas están numeradas y además el código está correctamente coloreado, mucho mejor que antes. Otro detalle interesante es el comando colorscheme, que define el tema de color del editor. Si el actual no le conviene, simplemente pruebe las opciones presionando :colorscheme <Tab> y confirmando eso con Enter. Después de decidirte por una opción, anótala en el .vimrc y salva, ya que los cambios realizados a través de : solo se aplican hasta que cierre el editor.
colorscheme desert " Define el tema de color del editor
Más adelante, veremos cómo instalar plugins, siendo un tipo de plugin con nuevos temas de color.
A continuación, enumeraré algunas otras opciones interesantes para el editor que uso a diario, pero recuerda: si notas que falta algo, simplemente busca en Internet porque es muy probable que exista una solución ya preparada.
set tabstop=2 " Define el número de espacios que ocupa un <Tab>
set expandtab " Substituye el caracter <Tab> por espacios en el INSERT mode
set mouse=a " Hace posible usar el mouse para seleccionar texto
set autoindent " Genera automáticamente sangría en la próxima línea al presionar Enter
set listchars=tab:>-,trail:-,eol:$ list " Hace visibles caracteres como <Tab>
¿Qué son remaps?
En Vim, los remaps, también conocidos como remapeados, son una característica poderosa que permite a los usuarios personalizar la forma en que el editor interpreta los comandos. Básicamente, los remaps permiten asignar secuencias de teclas personalizadas a comandos específicos, reemplazando o ampliando los atajos de teclado predeterminados de Vim según el gusto del usuario.
El editor proporciona varias formas de realizar acciones rápidas y efectivas, pero en muchos casos es posible notar que estamos repitiendo los mismos comandos varias veces, lo que termina provocando un problema que Vim debería solucionar. Los remaps resuelven este problema. Para empezar, recomiendo agregar el código que viene al principio de tu archivo .vimrc:
let mapleader = " " " Usa <Space> como leader
Esta línea básicamente establece el espacio en tu teclado para el comando <leader>. Normalmente, este comando se utiliza para realizar los remaps junto a otra letra. Puedes definir el <leader> como cualquier tecla. Sin embargo, prefiero el espacio ya que es una tecla de fácil acceso y poco utilizada fuera del INSERT mode.
Con el <leader> ya definido, vamos a escribir ahora el primer remap. Realmente me gusta este comando y lo uso todo el tiempo para organizar el flujo de trabajo.
nnoremap <leader>t :tabnew<CR> " Abre una nueva pestaña
nnoremap {1} {2} es el comando utilizado y asigna una secuencia de comandos en {1} que, siempre que se ejecuten, se hará lo que esté en {2}.
Cierra y abre tu editor para presionar Espacio y t. A continuación, se abrirá una nueva pestaña en el editor. Antes de hacer este remap, la única forma posible de abrir nuevas pestañas es mediante el comando :tabnew, lo que hace que sea un poco complicado escribir cada vez. Pero ahora, ¿cómo podemos cambiar de pestaña? Podemos hacer un remap para eso también: basta agregar a tu .vimrc lo siguiente:
" Navegación en pestañas
noremap <leader>1 1gt
noremap <leader>2 2gt
noremap <leader>3 3gt
noremap <leader>4 4gt
noremap <leader>5 5gt
noremap <leader>6 6gt
noremap <leader>7 7gt
noremap <leader>8 8gt
noremap <leader>9 9gt
noremap <leader>0 :tablast<CR>
Me gusta usar <leader> para controlar las pestañas, aunque su uso es opcional. Por ejemplo, en caso de que quieras usar Control en lugar de <leader> , la sintaxis es <C-{1}>, siendo {1} la letra/número deseado. Solo ten cuidado de no sobreescribir los comandos patrones.
Ahora, al cerrar y abrir el editor, será posible navegar por las pestañas presionando Espacio y el número, y se abrirá una nueva capa de utilidad para el editor. Enumeraré algunos otros remaps que utilizo en mi día a día, quedando a tu discreción copiarlos y/o modificarlos.
nnoremap <leader>z :tabnew<CR>:term<CR> " Abre una terminal en una nueva pestaña
nnoremap <C-s> :w<CR> " Guarda el archivo rápidamente
:nmap cp :let @+ = expand("%")<CR> " Copia el camino del archivo abierto
nnoremap <leader>n :new<CR> " Abre una ventana vacía rápidamente
noremap <leader>et :Ex<CR> " Abre el file explorer de Vim
En comandos que utilizan :, el símbolo <CR> significa lo mismo que presionar Enter para ejecutar el comando.
Las posibilidades de remaps son infinitas. Recomiendo que uses el editor y crees tus propios remaps según tus necesidades, ya sea para facilitar una acción o para realizar varias de una vez.
Plugins
Los plugins para Vim son creados y mantenidos por una comunidad activa y diversa de desarrolladores que aportan sus ideas y soluciones para mejorar el editor. Cubren una amplia gama de funcionalidades, desde resaltado de sintaxis avanzado para muchos lenguajes de programación, hasta integración con sistemas de control de versiones, administradores de proyectos, autocompletado, formateo automático, temas de color y mucho más.
En esta introducción, exploraremos los conceptos básicos de los plugins para Vim, incluyendo cómo instalarlos, manejarlos y cómo ellos pueden elevar tu productividad al editar textos. Aprenderemos sobre manejadores populares de plugins como vim-plug, que facilita la instalación y actualización de plugins. Además, cubriremos las mejores prácticas para configurar y personalizar los plugins, asegurando que se integren perfectamente en su flujo de trabajo y satisfagan sus necesidades específicas.
El manejador de plugins los instala y actualiza automáticamente. En este artículo, utilizaremos vim-plug para demostrar lo anterior, pero existen diversas opciones de manejadores. Para comenzar, visitaremos el GitHub de vim-plug y seguiremos los pasos de instalación:
Para sistemas Unix (Linux/OS X)
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Para sistemas Windows
iwr -useb https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim |`ni $HOME/vimfiles/autoload/plug.vim -Force
Después de ejecutar el comando, vamos a nuestro archivo .vimrc y separamos una sección para los plugins. En estos casos, dejo la configuración de plugins debajo de los remaps y comandos. En la parte superior de esta sección, agreguemos lo siguiente:
" Inicializa el manejador vim-plug
call plug#begin()
" <-- Sección para los PLUGINS -->
" Finaliza el manejador vim-plug
call plug#end()
Ahora que tenemos listo el manejador de plugins, podemos instalar nuevos plugins para Vim. Vamos a realizar la instalación del plugin que considero más útil: fzf-vim. Este plugin añade una caja de búsqieda de archivos que responde a lo que escribes, facilitando la apertura de archivos y la navegação por grandes proyectos.
" Inicializa el manejador vim-plug
call plug#begin()
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
" Finaliza el manejador vim-plug
call plug#end()
Nota que para instalar plugins, utilizamos la función Plug seguida de la ruta de GitHub del plugin. Ya que fzf-vim tiene la URL https://github.com/junegunn/fzf.vim, el comando requiere solamente de las dos últimas rutas o caminos.
Después de actualizar .vimrc, guarda el archivo y ábrelo nuevamente. Ejecuta en el editor :PlugInstall para instalar el nuevo plugin. Se abrirá una nueva ventana y mostrará el avance de la instalación. Una vez que termines, agrega el siguiente remap al .vimrc:
nnoremap <leader>f :Files<CR> " Encuentra archivos del directorio actual
Ahora, al iniciar el editor y pulsar Espaço y f, se abrirá una ventana con una lista de los archivos en el directorio actual. Puedes escribir para limitar la búsqueda y presionar Enter para abrir el archivo.
Para instalar nuevos plugins, el proceso es básicamente el mismo: añade la función Plug dentro de la sección de plugins, seguida de la URL del plugin. Luego, salva y ejecute :PlugInstall para instalar. A continuación, dejo una lista de plugins que utilizo en mi editor, aunque hay muchos tipos de plugins en internet, sea para temas de colores, iconos, barras de status, nuevos comandos, etc.
- https://github.com/neoclide/coc.nvim - Añade autocomplete y LSP al editor, similar a VScode.
- https://github.com/jacoborus/tender.vim - Tema de colores que uso cada día.
- https://github.com/tpope/vim-fugitive - Agrega soporte a Git.
- https://github.com/ap/vim-css-color - Colorea archivos CSS según el nombre de los colores.
- https://github.com/itchyny/lightline.vim - Añade una barra de status más útil y agradable.
Espero que esta guía te ayude a comprender mejor la personalización de Vim y el uso de plugins.
¡Nos vemos en mi próximo artículo!
Listopro Community da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.