11 puntos por GN⁺ 2024-08-19 | 3 comentarios | Compartir por WhatsApp
  • Todo desarrollador tiene su propio recorrido con los editores de texto y pasa por un proceso hasta llegar a la herramienta que usa hoy. Estas historias son interesantes y generan un gran aprecio por las herramientas de desarrollo y por el esfuerzo invertido en ellas
  • Este texto fue escrito para compartir ese recorrido con quienes se interesan por las herramientas de desarrollo y para animarlos a experimentar con herramientas nuevas

El inicio del recorrido con los editores de texto

  • Empecé usando Atom mientras aprendía los fundamentos de HTML, CSS y Javascript
  • Luego me cambié a VSCode, pero en ese tiempo mi esposa necesitaba usar la laptop para editar fotos, y la MacBook que usé en su lugar tenía problemas de rendimiento por la build de Electron de VSCode
  • En ese momento descubrí Vim por casualidad, y quedé fascinado con su flujo de trabajo centrado en el teclado y su velocidad, así que empecé a aprenderlo
  • Al principio lo usaba modificando mi Vim RC, y después conocí Neovim gracias a los videos de chris@machine
  • Usé Neovim durante años con una productividad muy alta. Invertí mucho tiempo afinando la configuración, pero al final llegué a un punto en el que casi ya no era necesario cambiar nada

El cambio

  • Pero con el paso del tiempo tuve que seguir simplificando los archivos de configuración, y aun así hacía falta bastante esfuerzo solo para mantener las funciones básicas
  • A veces, cada vez que actualizaba un plugin, Neovim empezaba a fallar y terminaba perdiendo tiempo deteniendo mi trabajo para resolver el problema. Intenté simplificar la configuración para arreglarlo, pero seguía siendo necesario dedicar esfuerzo para mantener las funciones esenciales
  • Sobre todo al trabajar en codebases grandes, Neovim se volvía lento y la pantalla llegaba a congelarse, lo que afectaba mi productividad
  • Intenté cambiar a otros emuladores de terminal, como Alacritty y Wezterm, pero no hubo una gran diferencia
  • Ya había oído hablar de Zed antes, pero como no estaba basado en terminal, dejé de usarlo. Sin embargo, al escuchar comentarios positivos sobre su velocidad, decidí darle otra oportunidad
  • Después de usarlo todos los días durante 2 meses, la experiencia con Zed me resultó muy satisfactoria y planeo seguir usándolo. No tengo intención de volver a Neovim

Experiencia usando Zed

  • Para explicar por qué elegí Zed, quiero contar cómo ha sido la experiencia de uso en general hasta ahora y cómo lo adapté a mi forma de trabajar

Todo "simplemente funciona"

  • Una de las mayores ventajas de Zed es que "todo simplemente funciona"
  • En especial, funciones como el protocolo Language Server Protocol (LSP), que en Neovim requieren bastante tiempo de configuración, en Zed funcionan bien desde el inicio
  • En Zed, atajos como "ver definición", "ir a la definición" y "acciones de código" vienen incluidos por defecto, y como soporta la mayoría de los lenguajes, no suele haber problemas

Velocidad

  • Una de las razones principales para elegir Zed fue su velocidad, y el resultado me dejó muy satisfecho
  • Incluso en codebases grandes funciona rápido y sin retrasos, y hasta ahora no he tenido problemas de rendimiento
  • Tal vez podría hacer que Neovim fuera más rápido, pero es mejor usar Zed que perder tiempo intentando mejorar la productividad a costa de más ajustes

Modo Vim

  • Como usuario de Neovim, ya había tenido la decepcionante experiencia de usar el plugin Vim de VSCode, que era inestable y tenía muchos bugs
  • El modo Vim de Zed es una función creada directamente por sus desarrolladores, es muy estable y soporta bien las funciones importantes
  • La estructura de atajos es muy flexible y ofrece funciones que probablemente les gusten a los usuarios de Vim

Funciones de IA

  • Zed también ofrece funciones de IA y trae Copilot integrado por defecto
  • Es posible usar modelos de IA de OpenAI, Ollama, Anthropic y otros mediante API
  • También resulta útil la función de asistente inline, donde puedes seleccionar parte del código e invocar al asistente de IA con ctrl-enter para que escriba código

Zed ≠ Neovim

  • Zed no puede reemplazar por completo a Neovim. Una de las mayores fortalezas de Neovim es que existe de forma nativa en la terminal
  • Para ediciones simples de archivos, Neovim sigue siendo más práctico, pero para sesiones largas o proyectos, Zed es perfecto

Ajustar Zed para usuarios de Neovim

Aunque Zed no es un reemplazo total de Neovim, es posible mejorar mucho la experiencia para usuarios de Neovim/Vim mediante varios ajustes pequeños que crean un entorno más familiar

Modo Vim y atajos de teclado

  • Lo primero que hay que hacer es activar el modo Vim. Zed ofrece una página de documentación sobre el modo Vim, donde explica los atajos básicos de Vim y cómo hacer configuraciones adicionales
  • Una gran ventaja de Zed es que permite configurar atajos según el modo Vim. Por ejemplo, se pueden aplicar atajos distintos en modo "Normal" y en modo "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"  
		}  
	},  
]  
  • Además, puedes configurar atajos para cambiar entre paneles en Zed y así crear un flujo de trabajo más parecido al de 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"]  
		}  
	},  
]  
  • También se recomienda consultar el keymap predeterminado de Vim para ajustar lo necesario. El keymap predeterminado de Vim es una referencia útil sobre lo que Zed soporta y lo que conviene adaptar

Interfaz simplificada

  • Zed ya ofrece una interfaz mínima, pero si prefieres una UI más parecida a tu configuración de Neovim, puedes desactivar la barra de pestañas, la barra de desplazamiento, la barra de herramientas y otros 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  
	},  
}  

Reemplazos de plugins

  • En Zed, para navegar entre archivos o buffers con una función similar a Telescope, puedes usar el tab switcher (Toggle)
{  
	"context": "Editor && VimControl && !VimWaiting && !menu",  
	"bindings": {  
		"space o": "tab_switcher::Toggle",  
	}  
}  
  • La búsqueda en todo el proyecto funciona como reemplazo de Telescope, permitiendo ver resultados en una vista de múltiples buffers y navegar fácilmente entre ellos
  • El toggle de terminal es similar al de VSCode, pero en Zed también existe la opción de abrir la terminal como buffer dentro de la vista principal del editor
{  
	"context": "Editor && VimControl && !VimWaiting && !menu",  
	"bindings": {  
		"space t": "workspace::NewCenterTerminal",  
	}  
}  
  • No puede reemplazar por completo a Tmux ni a las funciones de cambio de proyecto, pero la función de cambio de proyecto de Zed hace este trabajo bastante bien
{  
	"context": "Workspace",  
	"bindings": {  
		"cmd-k": [  
			"projects::OpenRecent",  
			{  
				"create_new_window": false  
			}  
		]  
	}  
}  

¿Deberías usar Zed?

  • Si estás pensando en probar Zed, te recomiendo usarlo durante algunos días
  • Zed es un editor de texto único y muy capaz, y al final lo importante es usar una herramienta que aumente tu productividad
  • Esa herramienta podría ser VS Code, JetBrains o incluso EMacs
  • Elige la herramienta que mejor se adapte a ti, pero ojalá no seas demasiado terco como para negarte a probar algo nuevo

3 comentarios

 
GN⁺ 2024-08-19
Opinión de Hacker News
  • Al principio me gustó Zed, pero al enfocarse en colaboración y funciones de IA, le faltan capacidades como editor básico y se volvió menos útil

    • Ahora volví a mi editor e IDE anteriores, y planeo probarlo de nuevo más adelante
  • La razón por la que uso Helix es que intenté pasar de VSCodium a Vim o Neovim, pero configurar los plugins fue difícil

    • Helix funciona de inmediato, así que lo estoy usando, y sus atajos de teclado son intuitivos; además pude aprender las combinaciones de Vim
    • El tema de colores predeterminado es un poco impactante
  • Recientemente cambié de Vim a Zed, y creo que Zed es excelente en muchos aspectos

    • Sin embargo, tiene muchos errores en funciones básicas, así que ojalá priorizaran eso por encima de la integración con IA y similares
  • Cuando uso Zed, disfruto mucho lo rápido que es y lo limpia que se ve la UI

    • Si la integración con Git y el soporte remoto fueran mejores, podría cambiarme por completo
  • Hace 6 meses cambié de VSCode a Zed, pero recientemente volví a Neovim

    • Me gustó el enfoque de Zed para la integración con Vim, pero por la falta de funciones básicas y los errores terminé regresando a Neovim
    • Si Zed madura, estaría dispuesto a volver
  • Espero que Zed se pula más y se estabilice

    • Hasta entonces sigo usando Sublime Text 4, que tiene un rendimiento excelente, y la extensión LSP junto con Sublime Merge cubren los huecos que deja VSCode
  • Me pregunto si ya probaste alguna distribución de Neovim

    • Distribuciones como LazyVim, AstroVim y NvChad ya vienen con los plugins e integraciones necesarias configurados
  • Si quieres un Neovim de verdad dentro de VSCode, te recomiendo revisar vscode-neovim

    • Puedes usar el VIM real junto con todas las funciones de VSCode
  • Me interesaron Kakoune y Helix, así que escribí una extensión de edición modal para VSCode

    • Soporta la mayoría de las funciones de VIM y agrega nuevas acciones y modos basados en AST
    • Planeo escribir una entrada de blog
  • Cuando exploré Zed en macOS, me dio la impresión de ser un editor rápido y con muchas funciones

    • Pero en sistemas *nix no es tan universal como vi/vim
    • Considerando las limitaciones de distintas infraestructuras y despliegues, es más fácil enfocarse en un editor universal
    • Zed puede ser una alternativa a vi/vim, pero es poco probable que la mayoría de los usuarios de vi/vim se cambien por completo
 
taking 2024-08-19

Yo también me cambié recientemente a Helix.
Como en el comentario de Hacker News, no aprovechaba todos los plugins que tenía en NeoVim, así que probé helix y me cambié de inmediato. La paleta de colores sí que impacta bastante.

 
roxie 2024-08-26

¿Quieres decir que no te gusta porque el tema predeterminado es demasiado morado? :eyes: