Executando verificação de segurança...
5

[Desafio] - Usando Helix por 1 mês - Semana 1

Sobre alguns desafios anteriores

Bom descobri que tinha um health check pro clipboard

➜ helix --health clipboard
System clipboard provider: wl-paste+wl-copy

No meu caso uso o wayland ai uso o wl-copy e estava funcionando, acontece que só usando o atalho y ele não copia pro clipboard no caso precisa usar <Space>+ypara copia-lo.
Uma coisa que acho meio perigosa no atalho que eles criaram para deletar caracteres com a letra d é que no vim temos um atalho dd que remove a linha inteira isso pode acabar confundindo, principalmente quem já tem a memória muscular pra fazer isso.
Outra coisa meio ruim é que no NeoVIm eu uso muito C+v + um jump para copiar e agora preciso fazer essa sequencia.
v + jump + <Space>+y
antes eu fazia assim
<Shift> + v + jump +y
O espaço no final sempre acaba me pegando, mas acredito que é questão de praticar mais também para se adaptar.
As vezes me confundo também com o a no caso do vim ele entra no mode de inserção no caractere posterior aqui no helix ele pula uma linha e entra no modo de inserção.

Coisas legais que descobri

Uma coisa legal que penso em levar pro meu Neovim é ele já fechar parenteses, chaves e colchetes automaticamente. Porém quando estou editando o script do meu curso de rust as vezes da uma dor de cabeça já que estou usando o mkdocs pra trabalhar com ele e alguns marcações não precisam ser fechadas e ele fecha, acredito que deva haver alguma forma de resolver isso só não sei ainda.

Uma coisa lega que descobri que consigo jogar o editor pra background e depois voltar, mais tarde descobri que também conseguia fazer isso com o vim por que na verdade é um comando do shell em si.

shortcutdescription
Ctrl+zjoga o editor pra background
fgvolta o editor para primeiro plano

Sobre o LSP

Precisei hoje instalar os servers de svelte e vue

npm install -g svelte-language-server
npm install -g typescript-svelte-plugin
npm install -g @vue/language-server
npm install -g prettier

Ai aproveitei e adicionei uma configuração extra no meu languages.toml

[[language]]
name = "vue"
auto-format = true
formatter = { command = "prettier", args = ["--parser", "vue"] }

Um ponto importante é que o helix é dividido em 3 partes

Language configuration

Nessa sessão fica as configurações especificas que você precisa de uma linguagem e a extensão da mesma.

Grammar configuration

Se tiver uma configuração do tree-sitter disponível ele vai usar normalmente ele vai usar um caminho padrão, no meu caso eu precisei configurar os linters para funcionarem globalmente para o helix conseguir pegar.

Queries

As queries na verdade também fazem parte do tree-sitter e elas provem o highlight e a edentação da linguagem.

fora isso é importando atualizar as gramáticas periodicamente.

helix --grammar fetch
helix --grammar build

Afinal o que é LSP

O Language Server Protocol (LSP) é um protocolo de comunicação usado entre um Editor de Código e um Servidor de Linguagem. Sua principal finalidade é permitir a integração eficiente de funcionalidades de análise de código e ferramentas específicas de linguagem diretamente nos editores de código.

Como Funciona:

  • Cliente-Server Model: O LSP segue um modelo cliente-servidor, onde o editor (cliente) se comunica com um servidor específico para uma linguagem de programação.
  • Comunicação via JSON-RPC: As mensagens são trocadas entre o cliente e o servidor usando o formato JSON-RPC, o que facilita a implementação em várias linguagens.

No nosso caso o helix tem um client LSP e precisamos instalar os servidores para usa-los com ele.

Afinal o que é o Tree-sitter

O Tree-sitter é um parser de código incremental e gerador de árvores de sintaxe. Ele é projetado para ser eficiente, preciso e capaz de lidar com linguagens de programação complexas.

Como Funciona:

  • Análise Incremental: O Tree-sitter realiza análises incrementais, o que significa que, ao modificar o código-fonte, apenas as partes afetadas são reanalisadas, proporcionando uma resposta mais rápida.
  • Geração de Árvore de Sintaxe: Ele gera uma árvore de sintaxe para o código-fonte, representando a estrutura hierárquica do mesmo.

Ele é muito importante para eu conseguir navegar pelo código através das arvores que ele gera.

Navegação

Uma coisa nova é a navegação ela tem algumas coisas parecidas com o vim e outras não e precisei fazer uma tabela de navegação para me ajudar a me orientar.

shortcutdescription
xseleciona linha
ventra no select mode
CSeleciono as mesmas palavras com multi-cursor
sSe estiver com linhas selecionadas da pra buscar um padrão dentro da seleção para fazer alteração

Buscas

shortcutdescipriton
Space+/Busca nos arquivos
Space+fBusca pelo nome do arquivo

Uma coisa não muito boa, é que ele ainda não tem uma forma de fazer uma busca dentro dos arquivos, isso é algo que acabo usando muito em projetos grandes então é um ponto ainda pra melhorar. Ele possui uma busca, mas em alguns casos acabou não dando muito certo.

Dica extra

Você tem um tutorial bem legal se você é novato em editores como o vim que é o modo tutor dele:

helix --tutor

É sempre interessante pra quem quer começar olhar esse tutor, no caso do vim também tem e recomendo a todos que olhem.

Próximos cápitulos

Bom acredito que essa semana foi uma semana pra se adaptar e pensar algumas coisas de modo diferente nesse semana tenho um pouco mais de trabalho planejado com python e svelte então vou explorar um pouco mais o trabalho com os buffers e registradores além das diversas features relacionadas a manipular a seleção de código e multi cursores e dar uma refinada na minha configuração e criar alguns atalhos, então nos vemos na próxima semana.

Carregando publicação patrocinada...
1

Você sabe se o helix tem git actions? No meu NeoVim eu consigo ver o diff do arquivo, além de dar stage ou undo em cada hunk. Tem como fazer isso no helix?? Ainda sinto falta de muitas coisas nele, essa e o file tree são uma delas.

Eu vejo meu NeoVim como uma extensão da minha mente, é quase uma conexão direta. Eu gostei bastante da proposta do helix, mas sinto que ele não é pra mim.

1

No neovim eu tava testando o neogit mas, de forma geral eu uso o lazygit fora dele. Então pro helix eu não sinto esse problema, principalmente agora que consigo jogar o editor pra traz usar o lazygit e depois voltar o editor pra frente no terminal.
File tree ele não tem, mas isso especificamente não me incomoda no neovim eu uso só o telescope mesmo.

Acho que o ponto pra quem usa vim/nvim até o momento é que muitas coisas são feitas de maneira diferente e outras não tem como plugins, mas como é um editor muito novo ainda tem muito a evoluir então até o momento a feature killer dele é o trabalho de multicursor e no tree-siter, se isso não te motivar talvez ainda vale pra ter uma experiência diferente.

O que é muito sensacional é que vejo a equipe do neovim olhando pro helix e pensando como melhorar a experiencia do editor a partir do que eles estão fazendo.

Num geral ta sendo uma aventura divertida, depois desses 30 dias ainda devo ficar usando ele um tempo por que devo registrar também meu neovim do zero por aqui e ai o helix vai continuar sendo meu editor principal ele tem muito potencial.

1