11 points par GN⁺ 2024-08-19 | 3 commentaires | Partager sur WhatsApp
  • Tous les développeurs ont leur propre parcours en matière d’éditeur de texte, avec tout le cheminement qui les amène à l’outil qu’ils utilisent aujourd’hui. Ces récits sont intéressants et inspirent une grande appréciation pour les outils de développement et les efforts investis dans leur création
  • Cet article a été écrit pour partager ce parcours avec les personnes intéressées par les outils de développement, et pour les encourager à expérimenter de nouveaux outils

Les débuts de mon parcours avec les éditeurs de texte

  • J’ai commencé par utiliser Atom en apprenant les bases du HTML, du CSS et du Javascript
  • Je suis ensuite passé à VSCode, mais à l’époque ma femme devait utiliser le portable pour faire de la retouche photo, et le MacBook que j’utilisais à la place souffrait de ralentissements à cause du build Electron de VSCode
  • C’est à ce moment-là que j’ai découvert Vim par hasard, et je suis tombé sous le charme du flux de travail centré sur le clavier et de sa rapidité, ce qui m’a poussé à l’apprendre
  • Au début, j’utilisais Vim en modifiant mon Vim RC, puis j’ai découvert Neovim via les vidéos de chris@machine
  • J’ai utilisé Neovim pendant des années avec une grande productivité. J’ai passé beaucoup de temps à peaufiner ma configuration, jusqu’à atteindre un point où elle ne nécessitait presque plus de changements

Le changement

  • Mais avec le temps, j’ai dû continuer à simplifier mes fichiers de configuration, et même maintenir des fonctionnalités de base demandait beaucoup d’efforts
  • Il arrivait qu’à chaque mise à jour de plugin, Neovim rencontre des problèmes, m’obligeant à interrompre mon travail pour passer du temps à les résoudre. J’ai essayé de simplifier ma configuration pour régler cela, mais il fallait toujours faire des efforts pour préserver les fonctionnalités essentielles
  • En particulier sur de grosses bases de code, Neovim devenait lent et l’affichage se figeait parfois, ce qui nuisait à ma productivité
  • J’ai tenté de passer à d’autres émulateurs de terminal, comme Alacritty ou Wezterm, mais cela n’a pas fait une grande différence
  • J’avais déjà entendu parler de Zed, mais comme il n’était pas basé sur un terminal, j’avais laissé tomber. Puis, après avoir entendu des retours positifs sur sa rapidité, j’ai décidé de lui redonner sa chance
  • Après l’avoir utilisé tous les jours pendant deux mois, l’expérience s’est révélée très satisfaisante, et je compte continuer à l’utiliser. Je n’envisage pas de revenir à Neovim

Mon expérience avec Zed

  • Pour expliquer pourquoi j’ai choisi Zed, je vais parler de mon expérience d’usage générale jusqu’ici et de la manière dont je l’ai adapté à mes besoins

Tout « fonctionne, tout simplement »

  • L’un des plus grands atouts de Zed, c’est que « tout fonctionne, tout simplement »
  • En particulier, des fonctionnalités comme le protocole Language Server (LSP), qui demandent beaucoup de temps à configurer dans Neovim, marchent très bien par défaut dans Zed
  • Dans Zed, des raccourcis comme « afficher la définition », « aller à la définition » ou « actions de code » sont fournis nativement, avec une prise en charge de la plupart des langages, ce qui évite les problèmes

La vitesse

  • L’une des principales raisons de mon choix de Zed était sa rapidité, et sur ce point le résultat a été très satisfaisant
  • Même sur de grosses bases de code, il reste rapide sans latence, et jusqu’à présent je n’ai rencontré aucun problème de performances
  • Il serait sans doute possible d’accélérer davantage Neovim, mais au lieu de perdre du temps à chercher des gains de productivité, mieux vaut simplement utiliser Zed

Le mode Vim

  • En tant qu’utilisateur de Neovim, j’avais déjà été déçu par le plugin Vim de VSCode, instable et truffé de bugs
  • Le mode Vim de Zed est une fonctionnalité développée directement par les créateurs de l’éditeur, très stable, avec une bonne prise en charge des fonctions essentielles
  • La structure des raccourcis clavier est très flexible et propose des fonctions qui devraient plaire aux utilisateurs de Vim

Les fonctions IA

  • Zed propose aussi des fonctions IA, avec Copilot intégré par défaut
  • Il est possible d’utiliser via API des modèles d’IA comme OpenAI, Ollama ou Anthropic
  • La fonction d’assistant inline, qui permet de sélectionner un morceau de code puis d’appeler l’assistant IA avec ctrl-enter pour écrire du code, est également utile

Zed ≠ Neovim

  • Zed ne peut pas remplacer complètement Neovim. Le fait que Neovim existe nativement dans le terminal reste un énorme avantage
  • Pour des modifications de fichiers simples, Neovim est plus pratique, mais pour des sessions longues ou des projets, Zed est parfait

Adapter Zed aux utilisateurs de Neovim

Zed n’est pas un remplaçant complet de Neovim, mais grâce à divers petits réglages, il est possible d’améliorer fortement l’expérience afin d’obtenir un environnement familier pour les utilisateurs de Neovim/Vim

Mode Vim et raccourcis clavier

  • La première chose à faire est d’activer le mode Vim. Zed propose une page de documentation sur le mode Vim, qui explique les raccourcis Vim de base et la manière d’ajouter des réglages supplémentaires
  • L’un des grands avantages de Zed est de pouvoir configurer les raccourcis clavier en fonction du mode Vim. Par exemple, on peut appliquer des raccourcis différents en mode « Normal » et en mode « 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"  
		}  
	},  
]  
  • Il est aussi possible de configurer les raccourcis de changement de panneau dans Zed afin de retrouver un flux de travail proche 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"]  
		}  
	},  
]  
  • Il est également recommandé de consulter la keymap Vim par défaut pour ajuster les réglages nécessaires. La keymap Vim par défaut constitue une référence utile sur ce que Zed prend en charge et sur les éléments à adapter

Une interface simplifiée

  • Zed propose déjà une interface minimale, mais si vous préférez une UI encore plus proche d’une configuration Neovim, vous pouvez désactiver la barre d’onglets, la barre de défilement, la barre d’outils, etc.
{  
	"cursor_blink": false,  
	"relative_line_numbers": true,  
	"scrollbar": {  
		"show": "never"  
	},  
	"vertical_scroll_margin": 0,  
	"tab_bar": {  
		"show": false  
	},  
	"toolbar": {  
	    "breadcrumbs": true,  
	    "quick_actions": false  
	},  
}  

Remplacer certains plugins

  • Dans Zed, on peut utiliser le sélecteur d’onglets (Toggle) comme fonctionnalité proche de Telescope pour naviguer entre les fichiers ou les buffers
{  
	"context": "Editor && VimControl && !VimWaiting && !menu",  
	"bindings": {  
		"space o": "tab_switcher::Toggle",  
	}  
}  
  • La recherche dans l’ensemble du projet remplace Telescope, avec un affichage multi-buffer des résultats qui permet de les parcourir facilement
  • Le terminal à bascule fonctionne de manière similaire à VSCode, mais dans Zed il existe aussi une option pour ouvrir le terminal comme buffer dans la vue principale d’édition
{  
	"context": "Editor && VimControl && !VimWaiting && !menu",  
	"bindings": {  
		"space t": "workspace::NewCenterTerminal",  
	}  
}  
  • Cela ne remplace pas complètement Tmux ni les fonctions de changement de projet, mais la fonction de bascule entre projets de Zed fait déjà très bien ce travail
{  
	"context": "Workspace",  
	"bindings": {  
		"cmd-k": [  
			"projects::OpenRecent",  
			{  
				"create_new_window": false  
			}  
		]  
	}  
}  

Faut-il utiliser Zed ?

  • Si vous hésitez à essayer Zed, je recommande de l’utiliser pendant quelques jours
  • Zed est un éditeur de texte à la fois singulier et très compétent, et au final l’important reste l’outil qui vous rend le plus productif
  • Cela peut être VS Code, JetBrains ou encore EMacs
  • Choisissez l’outil qui vous convient le mieux, mais essayez de ne pas être trop fermé à l’idée de tester quelque chose de nouveau

3 commentaires

 
GN⁺ 2024-08-19
Avis sur Hacker News
  • J’ai aimé Zed au début, mais à mesure qu’il s’est concentré sur les fonctionnalités de collaboration et d’IA, il est devenu moins utile faute de fonctionnalités suffisantes comme éditeur de base

    • Je suis actuellement revenu à mon ancien éditeur et IDE, avec l’intention de réessayer plus tard
  • La raison d’utiliser Helix est que je voulais passer de VSCodium à Vim ou Neovim, mais que la configuration des plugins était difficile

    • Helix fonctionne immédiatement, donc je l’utilise, et ses raccourcis clavier sont intuitifs tout en m’ayant permis d’apprendre les raccourcis de Vim
    • Le thème de couleurs par défaut est un peu choquant
  • Je suis récemment passé de Vim à Zed et je pense que Zed est excellent à bien des égards

    • Cependant, il y a beaucoup de bugs dans les fonctionnalités de base, et j’aimerais qu’elles soient prioritaires par rapport à l’intégration de l’IA et autres ajouts
  • Quand j’utilise Zed, j’apprécie sa grande rapidité et son interface propre

    • Si l’intégration Git et la prise en charge du distant étaient meilleures, je pourrais basculer complètement
  • Je suis passé de VSCode à Zed il y a 6 mois, mais je suis récemment revenu à Neovim

    • J’aimais l’approche de Zed pour l’intégration de Vim, mais je suis revenu à Neovim à cause du manque de fonctionnalités de base et des bugs
    • Je serais prêt à y revenir quand Zed sera plus mature
  • J’espère que Zed sera davantage peaufiné et stabilisé

    • En attendant, j’utilise Sublime Text 4, dont les performances sont excellentes, et l’extension LSP ainsi que Sublime Merge comblent les lacunes de VSCode
  • Je me demande si vous avez essayé une distribution Neovim

    • Des distributions comme LazyVim, AstroVim et NvChad ont déjà configuré les plugins et intégrations nécessaires
  • Si vous voulez un vrai Neovim dans VSCode, je recommande de jeter un œil à vscode-neovim

    • Cela permet d’utiliser le vrai VIM avec toutes les fonctionnalités de VSCode
  • Mon intérêt pour Kakoune et Helix m’a conduit à écrire une extension d’édition modale pour VSCode

    • Elle prend en charge la plupart des fonctionnalités de VIM, et ajoute de nouveaux comportements et modes basés sur l’AST
    • Je prévois d’écrire un billet de blog
  • Quand j’ai exploré Zed sur macOS, j’ai eu l’impression d’un éditeur rapide et riche en fonctionnalités

    • Cependant, sur les systèmes *nix, il n’est pas aussi universel que vi/vim
    • Compte tenu de la diversité des infrastructures et des contraintes de déploiement, il est plus simple de se concentrer sur un éditeur universel
    • Zed peut devenir une alternative à vi/vim, mais il est peu probable que la plupart des utilisateurs de vi/vim basculent entièrement
 
taking 2024-08-19

Je suis moi aussi récemment passé à Helix.
Comme dans les avis sur Hacker News, je n’utilisais pas tous les plugins de NeoVim, donc j’ai testé helix et je suis immédiatement passé dessus. En revanche, le thème de couleurs est vraiment déroutant.

 
roxie 2024-08-26

Vous voulez dire que le thème par défaut est trop violet et que ce n’est pas terrible ? :eyes: