- Un desarrollador que usó Vim durante 20 años comparte su experiencia tras cambiarse al editor Helix y usarlo por 3 meses
- Helix resulta atractivo porque ofrece soporte integrado para language server (LSP) sin necesidad de configuraciones complejas
- En particular, frente a Vim/Neovim, destacan la búsqueda mejorada y los cursores múltiples, que facilitan entender el contexto entre varios archivos y hacer ediciones masivas
- Al presionar teclas, un popup de referencia rápida (quick reference) permite aprovechar atajos sin olvidarlos
- Aunque tiene algunas incomodidades, como no generar listas de Markdown automáticamente, no contar con undo persistente y sufrir crashes aproximadamente una vez por semana, la experiencia general ha sido satisfactoria
- Reaprender la memoria muscular de Vim acumulada durante 20 años fue más fácil de lo esperado, y resultó mucho más efectivo aprender la “forma de Helix” que intentar forzar la de Vim
Por qué cambié a Helix
- Empecé a usar Helix para poder aprovechar fácilmente su integración con language servers
- En Vim/Neovim, configurar language servers era complicado, mientras que Helix permite usar de inmediato funciones como ir a definición o renombrar símbolos sin configuración adicional
- Antes tenía que mantener una gran cantidad de plugins y archivos de configuración, pero con Helix esa carga se reduce gracias al soporte integrado
Principales ventajas de Helix
- La calidad de su sistema de búsqueda
- Al buscar cadenas en todo el repositorio, muestra los resultados en una ventana de vista previa, por lo que se puede desplazar por los archivos coincidentes y ver también el código alrededor
- A diferencia del plugin de ripgrep en Vim, los resultados ofrecen mucho más contexto, lo que permite decidir más rápido
- Referencia rápida de atajos
- Al pulsar la tecla
g, aparece como popup de ayuda una lista de comandos de movimiento disponibles, lo que resulta muy intuitivo
- Incluso los atajos que no se usan seguido se pueden consultar fácilmente, así que la curva de aprendizaje es más suave
Diferencias entre Vim y Helix
- En lugar de la función de marks con
ma y 'a, se usa Ctrl+O y Ctrl+I para seguir el historial de movimiento del cursor
- En vez de macros, se usa principalmente la edición con cursores múltiples
- Para cambios masivos dentro de un documento: seleccionar todo con
% → selección por regex con s → realizar las ediciones múltiples necesarias
- Los cursores múltiples resultan mucho más cómodos que escribir macros cada vez
- En lugar de tabs, se puede cambiar rápido usando el buffer switcher con
space + b
Incomodidades de Helix
- La función de reflow de texto es menos efectiva que
gq de Vim
- Tiene peor compatibilidad con listas
- No admite la creación automática de listas en Markdown
- Aunque se presione "Enter" al final de un elemento de lista, la lista no continúa
- Hay una solución parcial para listas con viñetas, pero no para listas numeradas
- La función de undo persistente todavía no está implementada
- En Vim podía usar
undofile para deshacer cambios incluso después de cerrar el editor, pero Helix todavía no tiene esa función
- No admite recarga automática de archivos
- Después de que un archivo cambia en disco, hay que ejecutar manualmente
:reload-all (:ra<tab>)
- A veces se cae
- Aproximadamente una vez por semana, posiblemente relacionado con editar mucho Markdown
- No es un gran problema porque basta con volver a abrirlo
- Aun así, sigo usando Helix
Proceso de cambio y experiencia de aprendizaje
- Me preocupaba que reaprender la memoria muscular de Vim acumulada durante 20 años fuera muy difícil
- Empecé a usar Helix en un proyecto personal durante vacaciones y, después de 1 o 2 semanas, ya no me resultaba confuso
- Al principio intenté forzar keybindings parecidos a Vim, pero no funcionó, y aprender la “forma de Helix” fue mucho más fácil
- Aun así, siguen existiendo algunas partes confusas
- La definición de "palabra" en
w es distinta entre Vim y Helix (en Helix incluye el espacio posterior a la palabra; en Vim no)
Entorno de edición basado en terminal
- Como durante años usé sobre todo versiones GUI de vim/neovim, usar el editor en la terminal requirió cierta adaptación
- Flujo de trabajo que finalmente elegí
- Uso una ventana de terminal separada para cada proyecto, y todas las pestañas de esa ventana comparten el mismo directorio de trabajo
- Coloco la pestaña de Helix como la primera pestaña de la ventana de terminal
- Como es cómodo trabajar con varios proyectos en paralelo, incluso puede ser mejor que mi flujo de trabajo anterior
Configuración
- Frente a una configuración de Neovim de cientos de líneas, mantengo una configuración muy simple
- Básicamente solo configuré 4 atajos de teclado
- Configuración principal
- Tema:
solarized_light
- El registro de yank por defecto se configura como
+ para sincronizar con el portapapeles del sistema
# se asigna como atajo para alternar comentarios (no me gustaba el Ctrl+C predeterminado)
^ y $ se remapean para mover al inicio/final de línea (no quería aprender otra manera)
<space>l se asigna a :reflow (como escribo mucho texto, necesito hacer reflow con frecuencia y extrañaba el atajo gq de Vim)
- También configuro preferencias por lenguaje en un archivo
languages.toml separado
- En Python: uso el formateador black, el language server pyright y desactivo el formateo automático
Conclusión: impresiones tras 3 meses
- 3 meses no es tanto tiempo, y todavía podría volver a Vim algún día
- En el pasado me cambié a nix y luego volví a Homebrew 8 meses después (aunque sigo usando NixOS para administrar un servidor y estoy satisfecho)
- Helix todavía no es un producto terminado, pero su dirección como “editor sin configuración” es clara
- Gracias a su simplicidad y funciones integradas, tiene potencial a largo plazo como reemplazo de Vim
- Aun así, que siga usándolo o no dependerá de futuras mejoras de estabilidad y expansión de funciones
2 comentarios
Opiniones en Hacker News
segfaultcomo una vez por semana, pero me llama la atención esa forma de ver la pérdida de datos como “no importa mucho, solo lo vuelves a abrir”; Helix no tienepersistent undo, así que aunque lo reabras no vuelve al estado anteriorLlevo mucho tiempo usando Vim/Neovim, probé configuraciones propias y también hechas por otros, y aunque de verdad me gusta Vim, me resulta muy atractivo lo que ofrece Helix listo para usar sin tener que configurar nada aparte
Pero la configuración de Helix en sí me parece bastante primitiva, así que pienso que con solo unos primeros años usando Vim probablemente ya habría podido replicar en Helix el entorno que obtengo ahí, y decir que así ya no había más infierno de configuración
Me encanta que las ventanas emergentes de ayuda te indiquen qué ruta o keybinding debes seguir; no suelo usar tan seguido funciones como "ir a la definición" o "ir a referencias", así que se me olvidan los atajos con facilidad. Ojalá este tipo de popups contextuales se adoptara más ampliamente, y sería realmente útil si aparecieran de forma inteligente solo cuando uno duda al escribir
Llevo 20 años usando Vim/Neovim, pero recién hace 6 meses instalé el plugin which-key y me ha resultado muy útil
which-key.nvim GitHub
Intenté varias veces dejar bien armado el entorno principal del servidor de lenguaje, por ejemplo para poder usar "ir a la definición", pero siempre sentí que era demasiado difícil lograr una experiencia cómoda en Vim o Neovim
No está la molestia de mover la configuración de Vim y sus dependencias relacionadas; el entorno de desarrollo se siente mucho más portable, aunque no tan complejo como una configuración avanzada de Vim, sino más bien básico
En especial, después de ver la explicación y las capturas relacionadas en ese artículo, terminé deseando muchísimo esa función
Si el popup apareciera de forma inteligente según condiciones como un
timeout, sería excelente porque no molestaría cuando no hace falta y te guiaría automáticamente solo cuando dudassegfaultha sido algo rarísimo, contadas veces; casi nunca pasaAntes usaba sobre todo neovim y VS Code, pero Helix cubre una ventaja muy particular
Me daba flojera configurar neovim o seguir usando vim, así que necesitaba algo a medio camino entre VS Code y nvim, y Helix encaja perfecto
Si fuera un maestro de vimscript tal vez pensaría distinto, pero no lo soy, así que me va perfecto
Ojalá Helix siga como está y no necesite volverse más modular ni más tipo UNIX
Ya existe un ecosistema de herramientas bastante variado, y también puede usarse integrado con Claude Code (aplicando nuevas ediciones con refresh del buffer)
Es uno de los mejores editores, así que incluso empecé a apoyar el proyecto cada mes
Si pudiera pedir una mejora a futuro, lo que más extraño es que el editor pueda renderizar imágenes o fórmulas; espero que eso llegue mediante plugins como el protocolo de terminal Kitty o
sixelMe sería especialmente útil al trabajar en notas o blogs en archivos Markdown
Le deseo lo mejor a Helix
VSCode y (neo)vim siempre me inquietaban porque hay que traer plugins desde muchos lados
No soy desarrollador de Lua, pero un LLM ayuda muchísimo a configurar o modificar nvim
La principal razón por la que terminé usando helix es que la configuración de LSP/lint está muy bien resuelta
Comparto algunas cosas sobre funciones que ya fueron mergeadas en HEAD —
Como ya hay un selector de archivos integrado basado en búsqueda difusa, un explorador de archivos tradicional no aporta tanta utilidad adicional
También probé un plugin de keybindings de vim para Helix, pero solo coincidía parcialmente y eso me decepcionó más
templ,sqlc, etc.)Me pregunto cómo resuelven eso los usuarios experimentados de Helix
Configurar de forma cómoda los servidores de lenguaje en Vim/Neovim se volvió demasiado trabajo, así que terminé cambiándome a Helix
Pero en los últimos 5 años aparecieron distribuciones de Neovim con todo incluido, tipo “batteries included”, que permiten configurarlo muy fácilmente
Coincido en que muchos desarrolladores no quieren perder tiempo depurando el editor; por eso creo que JetBrains es tan popular
Aun así, cuesta un poco creer que alguien con 20 años usando Neovim nunca haya logrado armar bien un entorno LSP; me hace dudar si realmente es una experiencia honesta del autor
Al final, incluso para eso daba más flojera porque usar un IDE completo resultaba más cómodo, así que siempre hubo dudas con la instalación y la configuración
Me resulta muy comprensible el caso del autor
Yo también uso una configuración muy mínima, bastante barebones, y no me pareció difícil; además Lua se siente mucho más ergonómico que vimscript
Por eso sigo usando herramientas como ALE
Espero que también seas feliz usando Helix
Sí se pueden usar otros editores, pero casi toda la depuración y la configuración giran alrededor de vscode, así que el ambiente empuja a recomendarlo
La configuración de Neovim+treesitter+LSP ya funciona de forma muy fluida, aunque antes fuera difícil; hoy ya no es un gran problema
Si la razón para pasarse a Helix es LSP, me genera dudas; no sé si en realidad el autor estaba descontento con LSP
Una de las desventajas del enfoque noun-verb es que no se puede usar el comando de repetición (
.)En Vim puedes repetir acciones como
dd..,dap.., etc., pero el modelo noun-verb lo dificultaMás de fondo, también aparece el problema de que faltan teclas
Demasiadas operaciones básicas terminan usando la tecla Alt, y además no existen los modos normal/visual/insert como en vim, sino solo visual/insert
Ni siquiera está clara la separación entre motion y objeto, así que mapear teclas se vuelve más difícil y se nota más la escasez de teclas
De verdad se siente más alineado con la forma de pensar que necesitas al escribir código
Es una colección de plugins creada por echasnovski que cubre muchas necesidades con buena consistencia y documentación
Desde nvim 0.12 (nightly), con el gestor de plugins integrado (
vim.pack), basta con instalar mini.nvim ylspconfigsitio oficial de mini.nvim
repositorio GitHub de mini.nvim
En neovim lo uso sin plugins, sin autocompletado, e incluso sin syntax highlighting
Siento que esta forma de autodisciplina me lleva a escribir mejor código
No será para todo el mundo, pero recomiendo probarlo al menos una vez
Tampoco uso code actions ni goto definition, y aunque a veces sí uso errores en tiempo real, como el compilador es tan rápido, no aporta demasiado
A veces dan ganas de apagar LSP por completo; no creo que LSP haya mejorado de forma extraordinaria mi habilidad para programar comparado con hace 20 años
En cuanto al syntax highlighting, pienso que los temas demasiado coloridos más bien rompen la concentración y no aportan gran cosa
Prefiero temas de un solo color o de dos colores, y ni siquiera siento necesaria la distinción de color entre nombres de variables y funciones
Aun así, me queda la duda de si no termina acumulando fatiga por tener que recordarlo todo, o si de verdad este enfoque produce mejor código
Los colores son una capa extra de información que hace más visibles los errores o descuidos en el código y también acelera la navegación
Pero no de forma tan extrema: mantengo syntax highlighting y la retroalimentación de errores de sintaxis mediante LSP
No uso autocompletado ni enlaces automáticos a documentación
helix-editor.vercel.app
Es mucho más fácil de leer que la documentación oficial, y además tiene muchos tips/tricks, así que ayuda a mitigar desventajas de Helix como la falta de terminal integrada, además de enseñar edición eficiente y keybindings
Para usuarios veteranos de vim, recomiendo kickstart (en especial el fork modular kickstart-modular.nvim)
kickstart.nvim
Es un punto de partida muy minimalista y excelente
Eso sí, como ya es grande, yo lo manejo doblando secciones con
fold markerpara que sea más fácil administrarloA veces me interesa Helix por la facilidad de cosas como configurar el LSP y los plugins, pero tengo las manos demasiado acostumbradas a vi/vim, así que no es fácil.