Notas sobre como mudar para Helix do vim
Olá! No início deste verão, eu estava conversando com um amigo sobre o quanto adoro usar peixes e como adoro não precisar configurá-los. Eles disseram que sentem o mesmo em relação ao editor de texto helix, então decidi tentar.
Estou usando há 3 meses e aqui estão algumas notas.
por que helix: servidores de idiomas
Acho que o que me motivou a experimentar o Helix é que tenho tentado obter uma configuração de servidor de linguagem funcional (para poder fazer coisas como “ir para a definição”) e obter uma configuração que pareça boa no Vim ou Neovim parecia muito trabalhoso.
Depois de usar o Vim/Neovim por 20 anos, tentei “construir minha própria configuração personalizada do zero” e “usar o sistema de configuração pré-construído de outra pessoa” e, embora eu ame o Vim, fiquei animado em fazer as coisas funcionarem sem ter que trabalhar na minha configuração.
Helix vem com suporte de servidor de idioma integrado e é bom poder fazer coisas como “renomear este símbolo” em qualquer idioma.
a pesquisa é ótima
Uma das minhas coisas favoritas no Helix é a pesquisa! Se eu estiver pesquisando uma string em todos os arquivos do meu repositório, isso me permitirá percorrer os possíveis arquivos correspondentes e ver o contexto completo da correspondência, assim:

Para efeito de comparação, aqui está a aparência do plugin vim ripgrep que estou usando:

Não há contexto para o que mais está nessa linha.
a referência rápida é boa
Uma coisa que gosto no Helix é que quando pressiono grecebo um pequeno pop-up de ajuda informando lugares onde posso ir. Eu realmente aprecio isso porque não uso frequentemente o recurso “ir para definição” ou “ir para referência” e muitas vezes esqueço o atalho do teclado.

algumas traduções do vim -> hélice
- Helix não tem marcas como
ma,'aem vez disso estou usandoCtrl+Oe
Ctrl+Ipara voltar (ou avançar) para a última localização do cursor - Acho que o Helix tem macros, mas tenho usado vários cursores em todos os casos em que teria usado uma macro anteriormente. Gosto muito mais de vários cursores do que de escrever macros o tempo todo. Se eu quiser alterar algo em lote no documento, meu fluxo de trabalho é pressionar
%(para destacar tudo), entãos
para selecionar (com um regex) as coisas que desejo alterar, posso simplesmente editar todas elas conforme necessário. - Helix não possui guias no estilo neovim, em vez disso possui um bom alternador de buffer (
) que posso usar para mudar para o buffer que desejo. Há uma solicitação pull aqui para implementar guias no estilo neovim. Há também uma configuraçãob bufferline="multiple"que pode funcionar um pouco como guias comgp,gnpara “guia” anterior/próxima e:bcpara fechar uma “guia”.
alguns aborrecimentos da hélice
Aqui está tudo o que me incomodou no Helix até agora.
- Eu gosto do jeito que Helix é
:reflowfunciona muito menos do que como o vim reflui o texto comgq. Não funciona tão bem com listas. (problema do github) - Se eu estiver fazendo uma lista Markdown, pressionar “enter” no final de um item da lista não dará continuidade à lista. Há uma solução parcial para listas com marcadores, mas não conheço nenhuma para listas numeradas.
- Ainda não há desfazer persistente: no vim eu poderia usar um arquivo de desfazer para poder desfazer as alterações mesmo depois de sair. Helix ainda não possui esse recurso. (github PR)
- Helix não recarrega automaticamente os arquivos depois que eles mudam no disco, tenho que executar
:reload-all(:ra) para recarregá-los manualmente. Não é grande coisa. - Às vezes ele trava, talvez a cada semana ou mais. Alguém mencionou que isso pode ter algo a ver com o fato de eu editar muito Markdown, não tenho certeza. Isso não me incomoda muito, posso simplesmente reabri-lo. Não tenho 100% de certeza se a falha é uma falha de segurança ou um pânico, mas parece que o Helix pode falhar às vezes.
A “lista de markdown” e os problemas de refluxo surgem muito para mim porque passo muito tempo editando listas de Markdown, mas continuo usando o Helix de qualquer maneira, então acho que eles não podem estar me deixando tão bravo.
mudar foi mais fácil do que eu pensava
Eu estava preocupado que reaprender 20 anos de memória muscular do Vim seria muito difícil.
Acabou sendo mais fácil do que eu esperava, comecei a usar o Helix nas férias para um pequeno projeto de codificação de baixo risco que estava fazendo paralelamente e depois de uma ou duas semanas não parecia mais tão desorientador. Acho que pode ser difícil alternar entre o Vim e o Helix, mas não precisei usar o Vim recentemente, então não sei se isso se tornará um problema para mim.
A primeira vez que experimentei o Helix, tentei forçá-lo a usar atalhos de teclado mais parecidos com o Vim e isso não funcionou para mim. Aprender o “jeito Helix” foi muito mais fácil.
Ainda há algumas coisas que me confundem: por exemplo w no vim e w no Helix não temos a mesma ideia do que é uma “palavra” (o Helix inclui o espaço após a palavra, o Vim não).
usando um editor de texto baseado em terminal
Por muitos anos eu usei principalmente uma versão GUI do vim/neovim, então mudar para realmente usar um editor no terminal foi um pequeno ajuste.
Acabei decidindo por:
- Cada projeto obtém sua própria janela de terminal e todas as guias dessa janela (principalmente) têm o mesmo diretório de trabalho
- Eu faço da minha aba Helix a primeira aba na janela do terminal
Funciona muito bem, talvez eu goste mais dele do que do meu fluxo de trabalho anterior.
minha configuração
Agradeço que minha configuração seja realmente simples, em comparação com a configuração do neovim, que tem centenas de linhas. São principalmente apenas 4 atalhos 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"
Há um separado languages.toml configuração onde defino algumas preferências de idioma, como desligar a formatação automática. Por exemplo, aqui está minha configuração do Python:
((language))
name = "python"
formatter = { command = "black", args = ("--stdin-filename", "%{buffer_name}", "-") }
language-servers = ("pyright")
auto-format = false
vamos ver como vai
Três meses não é tanto tempo, e é possível que eu decida voltar para o Vim em algum momento. Por exemplo, escrevi um post sobre a mudança para o nix há algum tempo, mas depois de talvez 8 meses voltei para o Homebrew (embora ainda esteja usando o NixOS para gerenciar um pequeno servidor e ainda estou satisfeito com isso).
