Notas sobre cómo cambiar a Helix desde vim
¡Hola! A principios de este verano estaba hablando con un amigo sobre lo mucho que me encanta usar Fish y lo mucho que me encanta no tener que configurarlo. Dijeron que sienten lo mismo acerca del editor de texto helicoidal, así que decidí probarlo.
Lo he estado usando durante 3 meses y aquí hay algunas notas.
por qué helix: servidores de idiomas
Creo que lo que me motivó a probar Helix es que he estado tratando de configurar un servidor en un lenguaje funcional (para poder hacer cosas como “ir a la definición”) y obtener una configuración que se sienta bien en Vim o Neovim me pareció demasiado trabajo.
Después de usar Vim/Neovim durante 20 años, intenté “construir mi propia configuración personalizada desde cero” y “usar el sistema de configuración pre-integrado de otra persona” y aunque amo Vim, estaba emocionado de que las cosas simplemente funcionaran sin tener que trabajar en mi configuración en absoluto.
Helix viene con soporte de servidor de idiomas integrado y es agradable poder hacer cosas como “cambiar el nombre de este símbolo” en cualquier idioma.
la busqueda es genial
¡Una de mis cosas favoritas de Helix es la búsqueda! Si estoy buscando una cadena en todos los archivos de mi repositorio, me permite desplazarme por los posibles archivos coincidentes y ver el contexto completo de la coincidencia, como este:

A modo de comparación, así es como se ve el complemento vim ripgrep que he estado usando:

No hay contexto para lo que hay alrededor de esa línea.
la referencia rápida es buena
Una cosa que me gusta de Helix es que cuando presiono gaparece una pequeña ventana emergente de ayuda que me indica los lugares a los que puedo ir. Realmente aprecio esto porque no uso frecuentemente la función “ir a definición” o “ir a referencia” y a menudo olvido el método abreviado de teclado.

algo de vim -> traducciones hélice
- Helix no tiene marcas como
ma,'aen lugar de eso he estado usandoCtrl+Oy
Ctrl+Ipara retroceder (o avanzar) a la última ubicación del cursor - Creo que Helix tiene macros, pero he estado usando varios cursores en todos los casos en los que anteriormente habría usado una macro. Me gustan mucho más los cursores múltiples que escribir macros todo el tiempo. Si quiero cambiar algo por lotes en el documento, mi flujo de trabajo es presionar
%(para resaltar todo), entoncess
para seleccionar (con una expresión regular) las cosas que quiero cambiar, luego puedo editarlas todas según sea necesario. - Helix no tiene pestañas estilo neovim, sino que tiene un bonito conmutador de búfer (
) Puedo utilizar para cambiar al búfer que quiero. Aquí hay una solicitud de extracción para implementar pestañas de estilo neovim. También hay un escenariob bufferline="multiple"que puede actuar un poco como pestañas congp,gnpara la “pestaña” anterior/siguiente y:bcpara cerrar una “pestaña”.
algunas molestias de la hélice
Aquí está todo lo que me ha molestado sobre Helix hasta ahora.
- Me gusta la forma en que Helix
:reflowfunciona mucho menos que cómo vim redistribuye el textogq. No funciona tan bien con listas. (problema de github) - Si estoy haciendo una lista de Markdown, al presionar “enter” al final de un elemento de la lista no continuará la lista. Existe una solución parcial para las listas con viñetas, pero no conozco ninguna para las listas numeradas.
- Aún no hay deshacer persistente: en vim podría usar un archivo deshacer para poder deshacer los cambios incluso después de salir. Helix aún no tiene esa característica. (relaciones públicas de github)
- Helix no recarga automáticamente los archivos después de que cambian en el disco, tengo que ejecutar
:reload-all(:ra) para recargarlos manualmente. No es gran cosa. - A veces falla, tal vez cada semana más o menos. Creo que podría ser este problema.
La “lista de rebajas” y los problemas de redistribución me surgen mucho porque paso mucho tiempo editando listas de rebajas, pero sigo usando Helix de todos modos, así que supongo que no pueden estar enojándome tanto.
cambiar fue más fácil de lo que pensaba
Me preocupaba que volver a aprender 20 años de memoria muscular de Vim fuera muy difícil.
Resultó ser más fácil de lo que esperaba, comencé a usar Helix en unas vacaciones para un pequeño proyecto de codificación de bajo riesgo que estaba haciendo de forma paralela y después de una semana o dos ya no me sentía tan desorientado. Creo que puede ser difícil alternar entre Vim y Helix, pero no he necesitado usar Vim recientemente, así que no sé si eso alguna vez se convertirá en un problema para mí.
La primera vez que probé Helix intenté forzarlo a usar combinaciones de teclas que eran más similares a Vim y eso no funcionó para mí. Aprender el “método Helix” fue mucho más fácil.
Todavía hay algunas cosas que me desconciertan: por ejemplo w en vitalidad y w en Helix no tengo la misma idea de lo que es una “palabra” (el de Helix incluye el espacio después de la palabra, el de Vim no).
usando un editor de texto basado en terminal
Durante muchos años había estado usando principalmente una versión GUI de vim/neovim, por lo que cambiar a usar un editor en la terminal fue un pequeño ajuste.
Terminé decidiéndome por:
- Cada proyecto tiene su propia ventana de terminal y todas las pestañas de esa ventana (en su mayoría) tienen el mismo directorio de trabajo.
- Hago que mi pestaña Helix sea la primera pestaña en la ventana del terminal
Funciona bastante bien, puede que me guste más que mi flujo de trabajo anterior.
mi configuración
Aprecio que mi configuración sea realmente simple, en comparación con mi configuración de neovim, que tiene cientos de líneas. En su mayoría son solo 4 atajos de teclado.
theme = "solarized_light"
(editor)
# Sync clipboard with system clipboard
default-yank-register = "+"
(keys.normal)
# I didn't like that Ctrl+C was the default "toggle comments" shortcut
"#" = "toggle_comments"
# I didn't feel like learning a different way
# to go to the beginning/end of a line so
# I remapped ^ and $
"^" = "goto_first_nonwhitespace"
"$" = "goto_line_end"
(keys.select)
"^" = "goto_first_nonwhitespace"
"$" = "goto_line_end"
(keys.normal.space)
# I write a lot of text so I need to constantly reflow,
# and missed vim's `gq` shortcut
l = ":reflow"
Hay un separado languages.toml configuración donde configuro algunas preferencias de idioma, como desactivar el formato automático. Por ejemplo, aquí está mi configuración de Python:
((language))
name = "python"
formatter = { command = "black", args = ("--stdin-filename", "%{buffer_name}", "-") }
language-servers = ("pyright")
auto-format = false
veremos como va
Tres meses no es mucho tiempo y es posible que decida volver a Vim en algún momento. Por ejemplo, escribí una publicación sobre cambiar a nix hace un tiempo, pero después de unos 8 meses volví a cambiar a Homebrew (aunque todavía estoy usando NixOS para administrar un pequeño servidor, y todavía estoy satisfecho con eso).
