Agora o editor de código Zed está disponível no Linux, e eu decidi experimentar (Zed x VS Code)
Dia 10/07 o Zed anunciou que está disponível para Linux. Para instalar, veja a documentação. Existe a opção com um comando curl
ou via gerenciador de pacotes de acordo com a sua distro.
Eu instalei o Zed na versão 0.143.7. Ele ainda está numa versão "inicial", principalmente no Linux — ele foi inicialmente desenvolvido para o MacOS, mas é nativo tanto no MacOS quanto no Linux. É natural que tenha alguns problemas (exemplo). Estamos na fase de early adopters (ao menos, no Linux), ou seja, se você não gosta de adotar tecnologias quando ainda estão no seu início, aguarde alguns meses (ou anos) antes de testar.
Você pode verificar os recursos existentes para entender o que está disponível, e também pode usar o atalho Ctrl + Shift + P
, como no VS Code.
Qual o diferencial do Zed frente ao VS Code?
O VS Code é feito em Electron, enquanto que o Zed é feito em Rust. O VS Code se vende como gratuito, open-source e que roda em todo lugar; permite codificar em qualquer linguagem, com extensões e de forma totalmente customizável. O Zed se vende como um editor de alto desempenho, onde você "codifica na velocidade do pensamento", com edição colaborativa com outras pessoas e de código aberto; consciente da linguagem utilizada (language-aware), terminal integrado, temas e modo Vim. Na prática, eles tendem a ter recursos similares.
É relevante entender como os dois editores se vendem para entender qual o foco deles. O VS Code fouco seu discurso mais em "roda em qualquer lugar", e o Zed em "alto desempenho". Para entender se ter alto desempenho faz diferença para você, teste os dois editores no seu dia a dia.
Ambos possuem o código aberto no GitHub: microsoft/vscode e zed-industries/zed.
Minha experiência
No dia a dia, utilizo o Visual Studio Code, e isso significa que estou acostumado com seus pontos positivos e negativos, atalhos, menus etc. Por isso, é esperado que haja uma queda de produtividade inicial e que eu precise mudar algumas configurações.
O lado positivo de você se propor a experimentar um software diferente é que você pode descobrir que ele te atende melhor, e que existiam alguns problemas no software que você utilizava que você ignorava, de tão acostumado que ficou. Talvez você só perceba a diferença nesses detalhes após dias ou semanas de uso do novo software.
Um exemplo que me incomoda no VS Code é quando tento renomear tags em um arquivo JSX. Nem sempre funciona como esperado. Como não é algo que "sempre dá errado", provavelmente só vou saber se o Zed lida melhor com isso após usá-lo por semanas ou meses. Já adianto que o Zed não lida bem ao renomear tags com multi-cursor, ou seja, com o cursor na abertura e no fechamento da tag (ele duplica os caracteres digitados).
Eu ia citar todas extensões que uso no VS Code, mas esta publicação está com muitos caracteres, então vou resumir: são 28 extensões, das quais 4 para Python, 1 para C/C++, 2 para erros de digitação, 3 de estilização do editor, 2 de estilização do código, 1 de snippets, 3 de intellisense, 2 previewers, StyleLint, ESLint, Prettier, SQLite, GitLens, Live Server, Thunder Client e outras extensões "gerais".
Como uso o VS Code há bastante tempo, algumas extensões vão se acumulando mesmo sem eu considerá-las tão úteis. Eu trabalho com uma janela por projeto/workspace, e não tenho todas extensões ativas para todos projetos. Além disso, deixei de usar algumas extensões ao longo do tempo pois o VS Code incorporou a funcionalidade delas, então podem ter extensões na lista que hoje não são úteis para mim.
Eu usei o Zed sem extensões, então é claro que não dá para comparar ambos de forma 100% justa. Daqui um ano eu conseguiria comparar melhor, pois provavelmente teria mexido com diferentes linguagens e adicionado extensões que melhorassem minha experiência. Eu instalei o Zed no dia 13/07 e o usei por boas horas antes de criar essa publicação, mas apenas no projeto do TabNews (filipedeschamps/tabnews.com.br).
Atalhos
Logo que abri o Zed, notei que alguns atalhos eram diferentes do VS Code. Aqui você tem duas opções: ou se acostuma com o padrão do Zed, ou os modifica para o que está acostumado.
Caso queira editar os atalhos, o Zed tem uma documentação sobre, mas a parte importante para isso é:
- Pressione
Ctrl + K + S
, isso abrirá o arquivo~/.config/zed/keymap.json
. - Adicione seus atalhos.
- Salve o arquivo, e pronto. Os atalhos já estarão funcionando.
O arquivo começa vazio e você pode adicionar apenas os atalhos que deseja, sem repetir os atalhos originais. Os atalhos originais para Linux estão aqui: default-linux.json. Achei a estrutura do arquivo bem feita e intuitiva.
O Zed inclui um autocomplete que auxilia nas alterações:
O autocomplete poderia ser melhor, mas está aceitável. Veja no GIF que ao digitar ::
, ele resolveu ignorar o que estava antes do separador e voltar a dar várias sugestões, então o editor::Format
só foi a primeira opção sugerida após digitar editor::form
, ou caso você digitasse apenas form
, sem o prefixo editor::
.
Mesmo que você escolha usar os atalhos do Zed, alguns podem não funcionar corretamente no seu ambiente. Por exemplo, para criar um terminal o atalho padrão é Ctrl + ~
. Testando no Fedora, eu precisava fazer Ctrl + ~ + ~
, e o primeiro ~
aparecia como caractere no código que estava focado. No VS Code, Ctrl + ~
exibe e esconde o terminal, e não preciso pressionar ~
duas vezes.
Não encontrei uma forma de ter um atalho com duas ações, por exemplo: no próprio aplicativo do terminal, Ctrl + C
copia o texto caso algo esteja selecionado, do contrário, envia o comando para a aplicação. Quando defini "ctrl-c": "terminal::Copy"
no Zed, o Ctrl + C
não encerrava mais a aplicação que estava em execução. No terminal integrado do VS Code eu consigo ter o mesmo comportamento do terminal do Fedora.
Velocidade
O VS Code não me aborrece na velocidade que entrega. O terminal integrado dele já travou algumas raras vezes no meu Fedora, mas não me lembro desse problema no Windows. De vez em quando, a extensão do ESLint é bem lenta e precisa ser reiniciada. Ao usar arquivos grandes (+5000 linhas) e com a opção de formatar ao salvar ativa, o salvamento demora para acontecer. Esses são os incômodos de velocidade que me lembro de ter com o VS Code.
Como já citei, o fato de ter usado o Zed por menos tempo, não ter extensões, e ele ser em Rust enquanto que o VS Code é em Electron, leva a crer que a velocidade do Zed será mais rápida.
- A abertura do editor Zed é bem mais rápida do que no VS Code, mas não preciso fazer isso tantas vezes ao longo do dia, e o VS Code não demora mais do que um segundo, então não preciso "esperar abrir".
- Antes do Zed lançar para o Linux, vi algumas pessoas comentando que o feedback ao digitar dele era "instantâneo" e a diferença era perceptível ao comparar com outros editores. Eu não senti diferença no Fedora. Não sei se é uma experiência minha ou se no Linux o desempenho não está tão "perfeito" quanto no Mac.
- O
Ctrl + Tab
para trocar entre as abas abertas no editor é mais rápido no Zed, mas não é lento no VS Code, então na prática não faz diferença. - No autocomplete de código, o Zed é mais lento. Provavelmente não vou conseguir transmitir isso pelo GIF abaixo, mas deixo como exemplo. Na prática, realmente eu sentia que para usar o autocomplete do Zed eu precisava parar e esperar. No VS Code é mais natural na maioria das vezes, onde eu não preciso parar de digitar.
Zed | VS Code |
---|---|
Ou seja, o Zed é rápido em algumas coisas, mas para mim foi mais lento na mais importante: o autocomplete de código. Na maior parte do tempo o VS Code é bom o suficiente para me deixar fazer o trabalho e eu não lembrar que ele está ali, enquanto que no Zed eu preciso parar e esperar ele completar.
Terminal integrado
Não sei porquê, mas o Zed não reconheceu alguns caracteres especiais no terminal integrado, mesmo o terminal do Fedora e o terminal integrado do VS Code reconhecendo normalmente. Não procurei uma solução para esse problema.
Aplicativo | |
---|---|
Terminal | |
Zed | |
VS Code |
Agora, um problema que considero grave: o Zed não tem a barra de scroll no terminal (issue). Às vezes preciso mover muito o scroll para ver algum log antigo, e no VS Code eu posso simplesmente arrastar a barra de scroll. Para quem tem um mouse com scroll infinito, talvez isso não faça diferença.
Outro ponto, ao pressionar Ctrl + Backspace
no VS Code, eu consigo apagar palavras. No terminal integrado do Zed, apenas um caractere é apagado. O Ctrl + W
funciona para isso; não sei se é porque o Zed está seguindo os atalhos do Gnome (só conheci esse atalho agora), mas vale mencionar.
Autocomplete na busca de arquivos (Ctrl + P
)
No começo, tive problemas com o Zed. Os anúncios estavam sendo implementados no TabNews, e eu não lembrava o nome do model
, então pesquisei: model ad
e ele não encontrou nada. No VS Code havia encontrado. Quando digitei models/ad
, o Zed encontrou. O arquivo era models/advertisement.js
.
Mas, agora não consigo reproduzir isso. Não sei se é porque o Zed ainda não havia atualizado os caches com os novos arquivos do projeto ou algo assim, mas agora a busca me atende bem.
Percebi que buscas iniciando com /
não funcionam, elas procuram apenas entre os arquivos recentemente abertos. Não entendi o motivo desse comportamento, visto que uma hora eu queria abrir um arquivo e o Zed não estava encontrando, e eu não tinha indentificado que o problema era a presença da barra no início.
Um exemplo específico que notei que o Zed se saiu melhor foi ao buscar por icons
. Eu queria encontrar o arquivo que exporta os ícones no projeto, TabNewsUI/icons/index.js
, mas não lembrava o nome. O Zed encontrou, mas o VS Code só encontrou ao buscar com aspas "icons"
:
Busca | Resultado |
---|---|
icons no Zed | |
icons no VS Code | |
"icons" no VS Code |
Busca (Ctrl + Shift + F
)
O atalho Ctrl + Shift + F
busca por algo no projeto inteiro. Eu o utilizo com frequência. O comportamento no Zed é bem diferente quando comparado ao VS Code, e essa semana de uso definitivamente não foi o suficiente para eu me acostumar. Prefiro o do VS Code, mas talvez seja apenas preferência, e não um problema de usabilidade. Apesar disso, vou citar os pontos relevantes.
VS Code | Zed |
---|---|
Veja como são diferentes. Eu gosto do VS Code porque ele me dá uma visão geral, mostrando vários resultados de uma vez, e eu consigo ver quais arquivos tem o que eu busco. Considero isso ainda melhor quando são poucos resultados por arquivo. Quando são muitos, eu minimizo para ver os arquivos relevantes e vou removendo os que não me interessam, ou já clico direto no que estou interessado.
No Zed, uma nova aba é aberta como se fosse um arquivo. No meu notebook, sem realizar scroll, eu consigo ver apenas 2 resultados e o início de um terceiro. O Zed mostra um contexto maior, 5 linhas para cada resultado vs 1 do VS Code, que é limitada ao pequeno espaço horizontal da guia de busca.
Essa aba de busca do Zed se comporta de forma similar à um arquivo. Eu posso alterar algo e, ao fechar, o Zed perguntará se desejo salvar. Se eu salvar, o arquivo que eu estava modificando o resultado encontrado é alterado. Caso eu deseje ir ao arquivo, posso clicar no nome dele e ir para a linha em questão.
Com o meu fluxo de trabalho hoje, diria que o VS Code me atende muito melhor. O Zed tem seus benefícios, mas acho que é bem improvável eu estar numa situação onde eu precise alterar uma das cinco linhas exibidas, e que eu busque por algo específico a ponto do que eu preciso ser exibido no topo.
Facilitações durante a codificação
Às vezes, eu preciso selecionar duas aspas de abertura e fechamento de uma string para substituir por crase, transformando-a em um template string do JavaScript. Isso é um procedimento comum, mas no Zed não é simples como deveria. No VS Code eu seleciono a primeira "
e uso Ctrl + D
para selecionar a próxima, então altero. Ao fazer isso no Zed, o editor sugere o crase logo que eu pressiono uma vez, mas é necessário apertar "espaço" para confirmar a alteração, e nesse momento ele "buga". O GIF abaixo mostra duas tentativas em cada editor: uma sem apertar espaço, para mostrar o comportamento, e outra apertando espaço, para confirmar a alteração:
Zed | VS Code |
---|---|
Veja que no VS Code funcionou das duas formas, e no Zed não funcionou corretamente. O Zed também tem esse bug quando você seleciona um texto e pressiona o crase e espaço, o texto é apagado ao invés de ficar entre crases (como aconteceria com aspas).
As sugestões de importação no Zed são um pouco mais simples do que do VS Code. Caso não tenham comentários, o Zed não mostra nada, e o VS Code mostra pelo menos a declaração (se é uma classe ou função, por exemplo). Quando há comentários, no VS Code é necessário clicar numa seta para ver a descrição detalhada:
Teste | Resultado |
---|---|
Zed | |
Zed com comentário | |
VS Code | |
VS Code com comentário |
Ponto positivo para o Zed por mostrar sem precisar clicar na seta; ponto positivo para o VS Code por mostrar a declaração. Vale ressaltar que na minoria das vezes eu preciso verificar algo detalhado, então o fato da janela de texto do VS Code ser bem grande provavelmente incomodaria caso sempre fosse exibida. Não experimentei o suficiente no Zed para dar uma avaliação final se me incomoda ou não.
Integração com o Git
No Zed, não encontrei uma boa integração com o Git sem extensões. Veja este exemplo:
As duas pastas em amarelo possuem algum arquivo modificado, mas isso é tudo o que consigo ver. Se eu abrir o arquivo, consigo ver o diff:
Considero o menu de alterações do VS Code mais prático, com área de staging, e diff lado a lado do arquivo:
E o VS Code também tem uma funcionalidade nova que é a possibilidade de adicionar um grupo de linhas ao staging, ao invés do arquivo todo. Costumo fazer todas as operações com comandos do Git, com exceção da verificação do diff e o manuseio das alterações para staging, pois acho mais prático pela UI do VS Code, então realmente achei bem negativo o Zed não ter algo similar.
Detalhes
- No Zed, ao digitar algo e apagar, ele considera o arquivo não modificado. No VS Code, isso não ocorre, e às vezes me atrapalha pois fico em dúvida sobre o que foi modificado.
Zed | VS Code |
---|---|
-
O Zed não reconheceu o arquivo
.eslintrc
do TabNews como sendo JSON; ficou sem destaque de sintaxe e precisei mudar a linguagem deUnknown
paraJSON
manualmente. Depois disso, ele ainda decidiu reformatar o JSON ao salvar, ao invés de manter a formatação corrente. -
Em várias ocasiões, cliquei em alguma variável e o Zed abriu uma nova aba com a declaração ou definição dos tipos, mesmo sem eu estar pressionando o
Ctrl
. Não consegui entender o padrão direito de quando isso ocorria, mas foi irritante e não me lembro desse problema no VS Code. -
Tive um pouco de dificuldade em escolher um tema dark para o Zed, e nunca tive um problema assim; os temas parecem não respeitar regras de contraste, porque alguns são muito difíceis de ler, ou difícil de distinguir duas coisas diferentes (como um comentário e uma variável). No VS Code eu uso o tema escuro Dark+.
E aí, vai usar o Zed?
Não. Por enquanto.
Foi uma experiência legal, mas algumas coisas me atrapalham muito no dia a dia, em especial a forma como o Zed lida com acentuações e a integração com o Git ser melhor no VS Code. Muito provavelmente o Zed irá melhorar, e talvez eu experimente ele novamente outro ano.
E você, já experimentou? Ficou curioso? Usa outro editor que não seja o VS Code? Compartilhe sua experiência também.
Fonte: https://zed.dev/linux