11 pontos por GN⁺ 2024-08-19 | 3 comentários | Compartilhar no WhatsApp
  • Todo desenvolvedor tem sua própria jornada com editores de texto e passa por um processo até chegar à ferramenta que usa hoje. Essas histórias são interessantes e despertam grande apreço pelas ferramentas de desenvolvimento e pelo esforço investido nelas
  • Este texto foi escrito para compartilhar essa jornada com pessoas interessadas em ferramentas de desenvolvimento e encorajá-las a experimentar novas ferramentas

O início da jornada com editores de texto

  • Comecei usando Atom e aprendendo o básico de HTML, CSS e Javascript
  • Depois migrei para o VSCode, mas na época minha esposa precisava usar o notebook para editar fotos, e o MacBook que eu usava no lugar sofria com queda de desempenho por causa da build em Electron do VSCode
  • Foi então que acabei descobrindo o Vim por acaso, e me encantei com o fluxo de trabalho centrado no teclado e com a velocidade, passando a estudá-lo
  • No começo eu o usava mexendo no Vim RC, e depois conheci o Neovim por meio dos vídeos do chris@machine
  • Usei Neovim por anos e tive uma produtividade alta. Gastei muito tempo ajustando a configuração, mas no fim cheguei a um estado em que quase não precisava mais mudar nada

Mudança

  • Mas, com o passar do tempo, precisei continuar simplificando os arquivos de configuração, e mesmo para manter recursos básicos era necessário muito esforço
  • Às vezes, sempre que eu atualizava plugins, o Neovim apresentava problemas, e eu acabava interrompendo o trabalho para gastar tempo resolvendo isso. Tentei simplificar a configuração para corrigir isso, mas o esforço para manter funcionalidades básicas ainda continuava
  • Especialmente ao trabalhar em codebases grandes, o Neovim ficava lento e a tela travava, o que prejudicava minha produtividade
  • Tentei trocar para outros emuladores de terminal, como Alacritty e Wezterm, mas não houve grande diferença
  • Eu já tinha ouvido falar do Zed antes, mas como ele não era baseado em terminal, parei de usá-lo. Ainda assim, depois de ouvir avaliações positivas sobre a velocidade do Zed, decidi dar outra chance
  • Depois de usá-lo todos os dias por 2 meses, a experiência com o Zed foi muito satisfatória, e pretendo continuar usando. Não penso em voltar para o Neovim

Experiência de uso com o Zed

  • Para explicar por que escolhi o Zed, quero falar sobre a experiência geral de uso até aqui e sobre como o adaptei para combinar comigo

Tudo “simplesmente funciona”

  • Uma das maiores vantagens do Zed é que “tudo simplesmente funciona”
  • Especialmente recursos como o protocolo Language Server Protocol (LSP), que no Neovim exigem muito tempo de configuração, no Zed funcionam bem por padrão
  • No Zed, atalhos como “ver definição”, “ir para definição” e “ações de código” vêm prontos por padrão, e como há suporte para a maioria das linguagens, raramente surgem problemas

Velocidade

  • Um dos principais motivos para eu escolher o Zed foi a velocidade, e no fim fiquei muito satisfeito
  • Ele funciona rápido mesmo em codebases grandes, sem atrasos, e até agora nunca enfrentei problemas de desempenho
  • Talvez desse para deixar o Neovim ainda mais rápido, mas em vez de desperdiçar tempo buscando esse ganho de produtividade, é melhor simplesmente usar o Zed

Modo Vim

  • Como usuário de Neovim, já tive a experiência frustrante de ver o plugin Vim do VSCode ser instável e cheio de bugs
  • O modo Vim do Zed é um recurso criado pelos próprios desenvolvedores, muito estável e com bom suporte às funcionalidades importantes
  • A estrutura de atalhos é muito flexível e oferece recursos que usuários de Vim provavelmente vão gostar

Recursos de IA

  • O Zed também oferece recursos de IA e já vem com o Copilot integrado por padrão
  • Também é possível usar modelos de IA como OpenAI, Ollama e Anthropic via API
  • O recurso de assistente inline, em que você seleciona parte do código e chama o assistente de IA com ctrl-enter para escrever código, também é útil

Zed ≠ Neovim

  • O Zed não consegue substituir completamente o Neovim. Um grande ponto forte do Neovim é existir nativamente no terminal
  • Para edições rápidas em arquivos simples, o Neovim é mais prático, mas para sessões longas ou projetos, o Zed é perfeito

Ajustando o Zed para usuários de Neovim

O Zed não é um substituto completo do Neovim, mas é possível melhorar bastante a experiência para usuários de Neovim/Vim com vários pequenos ajustes que tornam o ambiente mais familiar

Modo Vim e atalhos

  • A primeira coisa a fazer é ativar o modo Vim. O Zed oferece uma página de documentação sobre o modo Vim, explicando os atalhos padrão do Vim e como adicionar configurações extras
  • Uma das grandes vantagens do Zed é poder configurar atalhos de acordo com o modo Vim. Por exemplo, é possível aplicar atalhos diferentes nos modos “Normal” e “Visual”
[  
	{  
		"context": "Editor && VimControl && !VimWaiting && !menu",  
		"bindings": {  
			"space b": "editor::ToggleGitBlame",  
			"shift-k": "editor::Hover",  
			"space l f": "editor::Format",  
			"space d": "diagnostics::Deploy",  
			"space f f": "file_finder::Toggle",  
			"space o": "tab_switcher::Toggle",  
			"space e": "workspace::ToggleLeftDock",  
			"space /": "workspace::NewSearch",  
			"n": "search::SelectNextMatch",  
			"shift-n": "search::SelectPrevMatch",  
			"space t": "workspace::NewCenterTerminal",  
			"g b": "editor::ToggleComments",  
			"+ +": "workspace::Save",  
			"space c": "pane::CloseActiveItem"  
		}  
	},  
	{  
		"context": "Editor && vim_mode == visual && !VimWaiting && !VimObject",  
		"bindings": {  
			"shift-j": "editor::MoveLineDown",  
			"shift-k": "editor::MoveLineUp"  
		}  
	},  
]  
  • Além disso, você pode configurar atalhos para alternar entre painéis no Zed e criar um fluxo de trabalho parecido com o do Neovim
[  
	{  
		"context": "Dock || Terminal || Editor",  
		"bindings": {  
			"ctrl-h": ["workspace::ActivatePaneInDirection", "Left"],  
			"ctrl-l": ["workspace::ActivatePaneInDirection", "Right"],  
			"ctrl-k": ["workspace::ActivatePaneInDirection", "Up"],  
			"ctrl-j": ["workspace::ActivatePaneInDirection", "Down"]  
		}  
	},  
]  
  • Também vale a pena consultar o keymap padrão do Vim para ajustar o que for necessário. O keymap padrão do Vim é uma referência útil sobre o que o Zed oferece e o que pode precisar de ajustes

Interface simplificada

  • O Zed já oferece uma interface mínima, mas se você preferir algo mais parecido com uma configuração de Neovim, pode desativar a barra de abas, a barra de rolagem, a toolbar e outros elementos
{  
	"cursor_blink": false,  
	"relative_line_numbers": true,  
	"scrollbar": {  
		"show": "never"  
	},  
	"vertical_scroll_margin": 0,  
	"tab_bar": {  
		"show": false  
	},  
	"toolbar": {  
	    "breadcrumbs": true,  
	    "quick_actions": false  
	},  
}  

Alternativas a plugins

  • No Zed, você pode usar o alternador de abas (Toggle) para navegar entre arquivos ou buffers com uma funcionalidade parecida com a do Telescope
{  
	"context": "Editor && VimControl && !VimWaiting && !menu",  
	"bindings": {  
		"space o": "tab_switcher::Toggle",  
	}  
}  
  • A busca no projeto inteiro funciona como substituta do Telescope, permitindo ver os resultados em uma visualização com múltiplos buffers e navegar por eles com facilidade
  • O toggle do terminal é parecido com o do VSCode, mas no Zed também existe a opção de abrir o terminal como buffer na visão principal de edição
{  
	"context": "Editor && VimControl && !VimWaiting && !menu",  
	"bindings": {  
		"space t": "workspace::NewCenterTerminal",  
	}  
}  
  • Ele não substitui completamente o Tmux nem a troca de projetos, mas o recurso de alternância de projetos do Zed faz esse trabalho muito bem
{  
	"context": "Workspace",  
	"bindings": {  
		"cmd-k": [  
			"projects::OpenRecent",  
			{  
				"create_new_window": false  
			}  
		]  
	}  
}  

Vale a pena usar o Zed?

  • Se você está pensando em experimentar o Zed, recomendo usá-lo por alguns dias
  • O Zed é um editor de texto singular e competente, e no fim o que importa é a ferramenta que aumenta sua produtividade
  • Isso pode acabar sendo VS Code, JetBrains ou até EMacs
  • Escolha a ferramenta que mais combina com você, mas espero que você não seja rígido demais a ponto de deixar de experimentar coisas novas

3 comentários

 
GN⁺ 2024-08-19
Opiniões no Hacker News
  • No começo gostei do Zed, mas, ao focar em colaboração e recursos de IA, ele acabou ficando menos útil por faltar funcionalidades como editor principal

    • Atualmente voltei ao editor e à IDE que usava antes, e pretendo tentar de novo mais tarde
  • O motivo de usar Helix é que tentei migrar do VSCodium para Vim ou Neovim, mas configurar plugins foi difícil

    • O Helix funcionou de imediato, então sigo usando; os atalhos de teclado são intuitivos e também consegui aprender os atalhos do Vim
    • O tema de cores padrão é um pouco chocante
  • Recentemente migrei do Vim para o Zed e acho que o Zed é excelente em vários aspectos

    • Porém, há muitos bugs em funcionalidades básicas, então eu gostaria que dessem prioridade ao básico em vez de integração com IA e afins
  • Ao usar o Zed, gosto muito da velocidade e da UI limpa

    • Se a integração com Git e o suporte remoto fossem melhores, eu poderia migrar de vez
  • Há 6 meses migrei do VSCode para o Zed, mas recentemente voltei para o Neovim

    • Gostei da abordagem do Zed para integração com Vim, mas voltei ao Neovim por falta de funcionalidades básicas e por causa de bugs
    • Tenho intenção de voltar quando o Zed estiver mais maduro
  • Espero que o Zed fique mais polido e estável

    • Até lá, estou usando o Sublime Text 4, que tem excelente desempenho, e a extensão LSP junto com o Sublime Merge cobre as lacunas do VSCode
  • Fico curioso se você já experimentou distribuições de Neovim

    • Distribuições como LazyVim, AstroVim e NvChad já vêm com os plugins e integrações necessários configurados
  • Se você quer Neovim de verdade no VSCode, recomendo dar uma olhada no vscode-neovim

    • Dá para usar o VIM real junto com todos os recursos do VSCode
  • Passei a me interessar por Kakoune e Helix e escrevi uma extensão de edição modal para o VSCode

    • Ela suporta a maior parte das funcionalidades do VIM e adiciona novos comportamentos e modos baseados em AST
    • Pretendo escrever um post no blog
  • Quando explorei o Zed no macOS, tive a impressão de que era um editor rápido e rico em recursos

    • Porém, em sistemas *nix ele não é tão universal quanto vi/vim
    • Considerando várias restrições de infraestrutura e distribuição, é mais fácil focar em um editor universal
    • O Zed pode se tornar uma alternativa ao vi/vim, mas é improvável que a maioria dos usuários de vi/vim migre totalmente para ele
 
taking 2024-08-19

Eu também mudei recentemente para o Helix.
Como na opinião do Hacker News, eu não usava todos os plugins no NeoVim antigo, então resolvi testar o Helix e acabei migrando na hora. Mas o tema de cores realmente é chocante

 
roxie 2024-08-26

Isso quer dizer que você não curtiu o tema padrão por ele ser bem roxinho? :eyes: