En utilisant Vim pour le développement Go

En tant que programmeur, vous passez beaucoup de temps à utiliser des éditeurs de texte, desEs, etc. pour coder. Il est donc important de savoir quoi et comment vous l’utilisez. J’ai récemment déménagé à Vim pour le développement de Go et j’adore ça. Au départ, j’utilisais VSCode avec l’extension Go et après cela, j’ai utilisé GoLand pendant un certain temps. Visual Studio Code et GoLand sont tous les deux totalement géniaux, j’ai adoré les utiliser aussi. Il faut certainement du temps pour apprendre en utilisant vim, mais cela en vaut la peine. C’est à vous de décider ce qui fonctionne le mieux pour vous. N’utilisez pas vim simplement parce que d’autres l’utilisent. Je suis très débutant en vim et les choses que je vais expliquer ici sont ce que j’ai appris après avoir commencé à l’utiliser. Je serais vraiment heureux si vous êtes un utilisateur de Vim de longue date et que vous avez de bons conseils / suggestions. Vous pouvez les mettre dans la section des commentaires de cet article. Si vous êtes débutant, je mettrai de bonnes ressources pour apprendre le vim au bas de cet article.

REMARQUE: Cet article a été publié à l’origine sur https://jogendra.dev.

Pourquoi les gens utilisent-ils Vim?

  • Vim est garanti pour exister sur tous les systèmes Unix (fondamentalement, il est disponible sur toutes les plates-formes majeures). C’est partout, et c’est pareil sur toutes les plateformes. Vim prend en charge tous les formats de fichiers et langages de programmation, pas besoin de télécharger différentsEs pour différents langages de programmation.
  • Navigation sans souris. Vos doigts doivent très rarement quitter la rangée d’accueil, ce qui signifie que vous pourrez modifier le texte très, très rapidement. Vous pouvez faire le mappage des clés selon votre convenance. Ne pas avoir à basculer entre le clavier et la souris est définitivement agréable avec Vim.
  • Vim est très léger et rapide. Vim peut facilement gérer des fichiers volumineux, mais Visual Studio ou un autreE ne pouvait pas les gérer en douceur. Essayez d’ouvrir un fichier volumineux (~ 20 Mo) avec votre éditeur de texte non-vim préféré et vim, vous apprendrez certainement à connaître la différence. Il y a une grande puissance dans la façon dont Vim gère les fichiers (tampons), les fractionnements (fenêtres) et les mises en page (onglets), la puissance que vous ne pouvez pas obtenir dans d’autres éditeurs.
  • Vim et vim comme les éditeurs de texte (emacs, nano, etc.) se sentent et ont l’air si natifs, pas de distraction. Je n’ai pas besoin de basculer entre le terminal et l’éditeur / editor. C’est tout simplement au même endroit. Il est assez facile d’être productif dans vim avec peu d’effort.
  • Vim est très pratique lorsque vous devez effectuer des modifications de configuration rapides ou autres sur la machine / le serveur distant. Même sur votre propre machine, vous n’ouvrirez pas d’éditeur de texte lourd pour de petits changements.
  • Vim est hautement configurable. Vous pouvez simplement utiliser ~/.vimrc pour remplacer les configurations par défaut et personnaliser les vôtres. Les plugins Vim fournissent à vim tout ce dont vous avez besoin dans un éditeur de texte. La saisie semi-automatique, la coloration syntaxique ou toute autre fonctionnalité que vous nommez et qui est disponible, vous avez juste besoin du bon plug-in.
  • Utiliser vim est amusant. C’est un peu difficile à utiliser au départ, mais cela devient amusant une fois que vous vous y habituez.

C’est PARTI !

Dans cet article, nous explorerons la configuration de Vim en tant qu’EDI à part entière pour le développement de Go. Les plugins que nous allons utiliser sont:

  • vim-go : Plugin de développement Go pour Vim. Il a tout ce dont vous avez besoin pour le développement de Go.
  • NERDTree – Explorateur de système de fichiers pour le Vim. Il vous permet de parcourir visuellement des hiérarchies de répertoires complexes, d’ouvrir rapidement des fichiers pour les lire ou les éditer et d’effectuer des opérations de base du système de fichiers.

🔌 Vim-Go

Vim-Go est le plugin vim le plus populaire et le plus utilisé pour le développement de Go. Il offre presque toutes les fonctionnalités dont vous pourriez avoir besoin. Certains d’entre eux sont:

  • Compilez votre paquet avec :GoBuild, installez-le avec :GoInstall ou testez-le avec :GoTest.
  • Exécutez rapidement votre (vos) fichier(s) actuel(s) avec :GoRun.
  • Coloration syntaxique et pliage.
  • Prise en charge de l’auto-complétion via gopls.
  • Exécuter gofmt et goimports lors de la sauvegarde. Cela signifie que vous n’avez pas à vous soucier de l’importation de packages et de la mise en forme du code, vim-go le fera pour vous lors de l’enregistrement du fichier.
  • Accédez au symbole / déclaration avec :GoDef et recherchez la documentation avec :GoDoc ou :GoDocBrowser.
  • Vérifiez la couverture du code, faites le peluchage du code, etc.

Vous pouvez consulter toutes les fonctionnalités offertes par vim-go ici.

Installation de vim-go

Vim 8 a ajouté la prise en charge native des packages, ce qui signifie que vous pouvez charger des plugins en clonant simplement leur contenu dans votre répertoire ~/.vim. Pour installer vim-go, vous pouvez simplement exécuter la commande:

git clone https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go
Entrer en mode plein écran Quitter le mode plein écran

Vous devrez également installer tous les binaires nécessaires. vim-go facilite leur installation en fournissant une commande, :GoInstallBinaries, qui va go get tous les binaires requis.

Ou vous pouvez mettre le plugin dans votre ~/.vimrc.

call plug#begin()Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }call plug#end()
Entrer en mode plein écran Quitter le mode plein écran

Enregistrez maintenant le .vimrc et installez le plugin en exécutant vim +PlugInstall. Il installera le plugin vim-go avec tous les binaires nécessaires.

J’ai ajouté les directives liées à vim-go suivantes à mon .vimrc, pour le rendre plus utile:

Vous pouvez visiter les tutoriels officiels pour vos propres personnalisations. Des documentations vim-go complètes sont disponibles dans votre éditeur vim, vous pouvez simplement exécuter :help vim-go pour les vérifier. Voici comment mon vim cherche un programme Go après l’installation et la configuration de vim-go:

Belle ?

Complétion automatique

Il est vraiment difficile de coder sans complétion automatique et sans pouvoir accéder à la définition. Vim-go peut utiliser gopls pour l’achèvement, etc. La complétion est activée par défaut via omnifunc. Pendant que vous êtes en mode INSERT, vous pouvez déclencher l’achèvement avec Ctrl-x Ctrl-p. Si des noms correspondants sont trouvés, un menu contextuel s’ouvre et peut être navigué à l’aide des touches Ctrl-n et Ctrl-p.
Pour vérifier si le ftplugin/go.vim de vim-go a été configuré correctement pour la complétion automatique, vous pouvez exécuter:

:verbose setlocal omnifunc?
Entrer en mode plein écran Quitter le mode plein écran

Le message ci-dessous devrait apparaître:

Si vous souhaitez que l’invite de saisie semi-automatique apparaisse automatiquement chaque fois que vous appuyez sur le point (.), vous pouvez ajouter la ligne suivante à votre .vimrc:

au filetype go inoremap <buffer> . .<C-x><C-o>
Entrer en mode plein écran Quitter le mode plein écran

Maintenant, la saisie devrait offrir des suggestions automatiques ainsi que des aperçus de documentation. Cela devrait ressembler à ceci:

En dehors de la complétion vim-go, il existe de bons plugins que vous pouvez utiliser pour la complétion automatique et d’autres fonctionnalités LSP. Certains d’entre eux sont:

  • coc.nvim (Conquer of Completion): Moteur Intellisense pour Vim8 & Neovim, prise en charge du protocole de serveur de langue complète en tant que VSCode.
  • LanguageClient -neovim : Client de protocole de serveur de langue Minimal écrit en Rust.
  • YouCompleteMe: Moteur de complétion de code. Il a plusieurs moteurs d’achèvement.

Protocole de serveur de langue (LSP) et gopls

Le protocole de serveur de langue est utilisé entre un outil (le client) et un fournisseur d’intelligence linguistique (le serveur) pour intégrer des fonctionnalités telles que l’auto-complétion, aller à la définition, trouver toutes les références et similaires dans l’outil. L’objectif du protocole est de permettre à la prise en charge du langage de programmation d’être implémentée et distribuée indépendamment de tout éditeur ouE donné. Le protocole de serveur de langue a été développé à l’origine pour le code Visual Studio de Microsoft et est maintenant un standard ouvert. Microsoft a collaboré avec Red Hat et Codenvy pour standardiser les spécifications du protocole.

Avant LSP, il y avait différentsEs pour différentes langues (il y en a encore beaucoup). ChaqueEs avait une intégration spécifique à la langue (coloration syntaxique, auto-complétion, aller à la définition, etc.). La situation est souvent appelée problème M × N, où le nombre d’intégrations est le produit de M éditeurs et de N langages. Ce que fait le protocole du serveur de langue, c’est changer ce problème M × N en un problème M + N. La meilleure chose à propos du LSP est qu’il est totalement indépendant desEs. En conséquence, nous pouvons voir que Visual Studio fonctionne pour tant de langues différentes via des extensions. Ces extensions utilisent LSP.

Vous pouvez en savoir plus sur LSP ici et elle ou regarder cette vidéo YouTube pour voir comment cela fonctionne.

Serveur de langue officielle pour Golang est gopls (prononcé: « allez s’il vous plaît »). Vous pouvez consulter plus d’informations sur l’état des gopl et ses fonctionnalités prises en charge.

🔌NERDTree

Après avoir configuré beaucoup de choses dans votre Vim, une chose qui vous manque probablement le plus est la « Fenêtre latérale » où vous pouvez parcourir facilement vos fichiers de projet. NERDTree t’y a amené. NERDTree est un explorateur de système de fichiers à part entière, qui permet de parcourir visuellement vos fichiers à l’aide d’une fenêtre latérale arborescente. Avec NERDTree, vous pouvez ouvrir rapidement des fichiers pour les lire ou les éditer, et effectuer des opérations de base du système de fichiers.

Installation et configurations

Vous pouvez installer NERDTree de la même manière que vim-go et coc.nvim. Ajoutez simplement Plug 'preservim/nerdtree' à .vimrc et exécutez :PlugInstall ou exécutez vim +PlugInstall à partir de la ligne de commande.

De plus, vous pouvez consulter les FAQ du wiki pour les configurations. Mes configurations pour NERDTree sont similaires à:

Vous pouvez ouvrir un répertoire dans vim en utilisant vim . (similaire à code . pour VSCode). Vous pouvez basculer entre NERDTree et votre code en utilisant CTRL+ww ou CTRL+w+ArrowKey. NERDTree a une documentation intégrée, vous pouvez les vérifier en appuyant sur ? lorsque vous êtes dans la fenêtre NERDTree.

Voici à quoi ressemble ma configuration Vim avec NERDTree:

Vous pouvez jeter un œil à mes scripts .vimrc et vim sur GitHub sur jogendra/dotfiles/vim.

Voici quelques liens qui vous aideront à démarrer avec Vim:

  • OpenVim – Tutoriels Vim interactifs
  • Meilleurs conseils Vim par Fandom
  • Pourquoi, oh POURQUOI, ces nutheads utilisent-ils vi?
  • Collection d’articles Vim par thoughtbot
  • spf13-vim – La distribution Vim ultime
  • Feuille de triche Vim
  • Folie de l’onglet Vim. Buffers vs Tabs

Vous pouvez simplement exécuter vimtutor dans votre ligne de commande en exécutant la commande vimtutor. Il ouvrira des tutoriels Vim et vous aidera à démarrer avec cela.

Lignes de fond

Utiliser vim est amusant. Au départ, vous pouvez rencontrer un problème d’utilisation et vous devrez peut-être apprendre à l’utiliser, mais cela vaut vraiment la peine de l’apprendre. Au moins, vous pouvez continuer à apprendre vim parallèlement à l’utilisation d’unE. Commencez avec le minimum et construisez-en un peu chaque jour. Il y a beaucoup de plugins disponibles pour tout ce dont vous avez besoin avec Vim. L’utilisation de vim pour le développement de Golang est super agréable avec le plugin vim-go. N’est-ce pas agréable de tout avoir au même endroit et d’être plus productif?

Merci d’avoir lu. Partagez avec vos collègues / amis. Vous pouvez me contacter sur Twitter.



+