Verwenden von Vim für die Go-Entwicklung

Als Programmierer verbringen Sie viel Zeit damit, Texteditoren, IDEs usw. zum Codieren zu verwenden. Es ist also wichtig, was und wie Sie es verwenden. Ich bin kürzlich für die Go-Entwicklung zu Vim gezogen und liebe es total. Anfangs habe ich VSCode mit der Erweiterung Go verwendet und danach eine Weile GoLand. Visual Studio Code und GoLand sind beide total genial, ich habe sie auch geliebt. Es dauert definitiv einige Zeit, um mit vim zu lernen, aber es lohnt sich zu lernen. Es liegt ganz an Ihnen, was für Sie besser funktioniert. Verwenden Sie vim nicht nur, weil andere es verwenden. Ich bin ein Anfänger in vim und die Dinge, die ich darin erklären werde, habe ich gelernt, nachdem ich angefangen habe, es zu benutzen. Ich würde mich sehr freuen, wenn Sie ein langjähriger Vim-Benutzer sind und gute Ratschläge / Vorschläge haben. Sie können sie in den Kommentarbereich dieses Beitrags einfügen. Wenn Sie ein Anfänger sind, werde ich am Ende dieses Beitrags einige gute Ressourcen zum Erlernen von vim bereitstellen.

HINWEIS: Dieser Beitrag wurde ursprünglich auf https://jogendra.dev veröffentlicht.

Warum verwenden Leute Vim?

  • Vim existiert garantiert auf allen Unix-Systemen (im Grunde ist es auf jeder wichtigen Plattform verfügbar). Es ist überall, und es ist das gleiche auf allen Plattformen. Vim unterstützt alle Dateiformate und Programmiersprachen, ohne dass verschiedene IDEs für verschiedene Programmiersprachen heruntergeladen werden müssen.
  • Mausfreie Navigation. Ihre Finger müssen sehr selten die Home-Zeile verlassen, was bedeutet, dass Sie Text sehr, sehr schnell bearbeiten können. Sie können tun schlüssel mapping nach ihrer bequemlichkeit. Nicht zwischen Tastatur und Maus wechseln zu müssen, ist mit Vim definitiv schön.
  • Vim ist sehr leicht und schnell. Vim kann problemlos mit großen Dateien umgehen, aber Visual Studio oder eine andere IDE konnten sie nicht reibungslos verarbeiten. Versuchen Sie, eine große Datei (~ 20 MB) mit Ihrem bevorzugten Nicht-Vim-Texteditor und vim zu öffnen. Es gibt eine große Macht in der Art und Weise, wie Vim Dateien (Puffer), Splits (Fenster) und Layouts (Registerkarten) verarbeitet, die Macht, die Sie in anderen Editoren nicht bekommen können.
  • Vim und vim wie Texteditoren (Emacs, Nano, etc.) fühlen und sehen so nativ, keine Ablenkung. Ich muss nicht zwischen Terminal und Editor / IDE wechseln. Es ist einfach alles an einem Ort. Es ist ziemlich einfach, mit wenig Aufwand in vim produktiv zu sein.
  • Vim ist sehr praktisch, wenn Sie schnelle Konfigurations- oder andere Änderungen am Remote-Computer / Server vornehmen müssen. Selbst auf Ihrem eigenen Computer öffnen Sie keinen schweren Texteditor für kleine Änderungen.
  • Vim ist in hohem Maße konfigurierbar. Sie können einfach ~/.vimrc verwenden, um Standardkonfigurationen zu überschreiben und Ihre zu personalisieren. Vim-Plugins bieten vim alles, was Sie in einem Texteditor benötigen. Autocomplete, Syntax-Highlighting, oder jede andere Funktion, die Sie nennen es und es ist verfügbar, Sie brauchen nur das richtige Plug-in.
  • Die Verwendung von vim macht Spaß. Anfangs ist es etwas schwierig, es zu verwenden, aber es macht Spaß, sobald Sie sich daran gewöhnt haben.

Los geht’s!

In diesem Beitrag werden wir die Einrichtung von Vim als vollwertige IDE für die Go-Entwicklung untersuchen. Plugins, die wir verwenden werden, sind:

  • vim-go: Go-Entwicklungs-Plugin für Vim. Es hat alles, was Sie für die Go-Entwicklung benötigen.
  • NERDTree – Dateisystem-Explorer für das Vim. Es ermöglicht Ihnen, komplexe Verzeichnishierarchien visuell zu durchsuchen, Dateien schnell zum Lesen oder Bearbeiten zu öffnen und grundlegende Dateisystemoperationen auszuführen.

🔌 Vim-Go

Vim-Go ist das beliebteste und am häufigsten verwendete Vim-Plugin für die Go-Entwicklung. Es bietet fast alle Funktionen, die Sie benötigen. Einige von ihnen sind:

  • Kompilieren Sie Ihr Paket mit :GoBuild, installieren Sie es mit :GoInstall oder testen Sie es mit :GoTest.
  • Führen Sie Ihre aktuelle(n) Datei(en) schnell mit :GoRun aus.
  • Syntaxhervorhebung und -faltung.
  • Autocompletion-Unterstützung über gopls.
  • Führen Sie gofmt und goimports beim Speichern aus. Das heißt, Sie müssen sich keine Gedanken über den Import von Paketen und die Codeformatierung machen, vim-go erledigt das für Sie beim Speichern der Datei.
  • Gehen Sie zu Symbol / Deklaration mit :GoDef und suchen Sie die Dokumentation mit :GoDoc oder :GoDocBrowser.
  • Überprüfen Sie die Codeabdeckung, führen Sie Code-Linting usw. durch.

Hier können Sie alle von vim-go angebotenen Funktionen überprüfen.

Installation von vim-go

Vim 8 hat native Unterstützung für Pakete hinzugefügt, was bedeutet, dass Sie Plugins laden können, indem Sie einfach ihren Inhalt in Ihr ~/.vim Verzeichnis klonen. Um vim-go zu installieren, können Sie einfach den Befehl ausführen:

git clone https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go
Vollbildmodus aufrufen Vollbildmodus beenden

Sie müssen auch alle erforderlichen Binärdateien installieren. vim-go macht es einfach, alle zu installieren, indem es einen Befehl :GoInstallBinaries bereitstellt, der go get alle erforderlichen Binärdateien enthält.

Oder Sie können das Plugin in Ihre ~/.vimrc einfügen.

call plug#begin()Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }call plug#end()
Vollbildmodus aufrufen Vollbildmodus beenden

Speichern Sie nun die .vimrc und installieren Sie das Plugin, indem Sie vim +PlugInstall . Es wird das vim-go-Plugin mit allen erforderlichen Binärdateien installieren.

Ich habe meinem .vimrc folgende vim-go-bezogene Anweisungen hinzugefügt, um es nützlicher zu machen:

Sie können offizielle Tutorials für Ihre eigenen Anpassungen besuchen. Komplette vim-go-Dokumentationen sind in Ihrem vim-Editor verfügbar, Sie können einfach :help vim-go ausführen, um sie zu überprüfen. So sucht mein vim nach der Installation und Konfiguration von vim-go nach einem Go-Programm:

Schön?

Automatische Vervollständigung

Es ist wirklich schwierig, ohne automatische Vervollständigung zu codieren und nicht zur Definition zu gelangen. Vim-go kann gopls zur Vervollständigung usw. verwenden. Die Vervollständigung ist standardmäßig über omnifunc aktiviert. Während Sie sich im INSERT -Modus befinden, können Sie die Vervollständigung mit Ctrl-x Ctrl-p auslösen. Wenn übereinstimmende Namen gefunden werden, öffnet sich ein Popup-Menü, das mit den Tasten Ctrl-n und Ctrl-p navigiert werden kann.
Um zu überprüfen, ob vim-go’s ftplugin/go.vim korrekt für die automatische Vervollständigung konfiguriert wurde, können Sie Folgendes ausführen:

:verbose setlocal omnifunc?
Vollbildmodus aufrufen Vollbildmodus beenden

Nachricht unten sollte erscheinen:

Wenn Sie möchten, dass die Eingabeaufforderung zur automatischen Vervollständigung automatisch angezeigt wird, wenn Sie den Punkt (.) .vimrc:

au filetype go inoremap <buffer> . .<C-x><C-o>
Vollbildmodus aufrufen Vollbildmodus beenden

Jetzt sollten Sie automatische Vorschläge zusammen mit Dokumentationsvorschauen anbieten. Es sollte ungefähr so aussehen:

Abgesehen von der Vim-Go-Vervollständigung gibt es einige gute Plugins, die Sie für die automatische Vervollständigung und andere LSP-Funktionen verwenden können. Einige von ihnen sind:

  • coc.nvim (Datum der Fertigstellung): Intellisense motor für Vim8 & Neovim, volle sprache server protokoll unterstützung als VSCode.
  • LanguageClient-neovim: Minimaler in Rust geschriebener Language Server Protocol Client.
  • YouCompleteMe: Code-Vervollständigungs-Engine. Es hat mehrere Komplettierungsmotoren.

Language Server Protocol (LSP) und gopls

Das Language Server Protocol wird zwischen einem Tool (dem Client) und einem Language Smartness Provider (dem Server) verwendet, um Funktionen wie Auto-Complete, go to definition, find all references und ähnliches in das Tool zu integrieren. Ziel des Protokolls ist es, die Unterstützung von Programmiersprachen unabhängig von einem bestimmten Editor oder einer IDE zu implementieren und zu verteilen. Das Language Server Protocol wurde ursprünglich für Microsoft Visual Studio Code entwickelt und ist heute ein offener Standard. Microsoft arbeitete mit Red Hat und Codenvy zusammen, um die Spezifikation des Protokolls zu standardisieren.

Vor LSP gab es verschiedene IDEs für verschiedene Sprachen (immer noch gibt es viele). Alle IDEs hatten eine sprachspezifische Integration (Syntaxhervorhebung, automatische Vervollständigung, Gehen zur Definition usw.). Die Situation wird oft als M × N-Problem bezeichnet, bei dem die Anzahl der Integrationen das Produkt von M Editoren und N Sprachen ist. Das Language Server-Protokoll ändert dieses M × N-Problem in ein M + N-Problem. Das Beste an LSP ist, dass es völlig unabhängig von IDEs ist. Als Ergebnis können wir sehen, dass Visual Studio für so viele verschiedene Sprachen über Erweiterungen funktioniert. Diese Erweiterungen verwenden LSP.

Sie können hier und hier mehr über LSP lesen oder sich dieses YouTube-Video ansehen, um zu sehen, wie es funktioniert.

Offizieller Sprachserver für Golang ist gopls (ausgesprochen: „geh bitte“). Sie können weitere Informationen zum Status von gopls und den unterstützten Funktionen abrufen.

🔌 NERDTree

Nachdem Sie viele Dinge in Ihrem Vim eingerichtet haben, fehlt Ihnen wahrscheinlich noch das „Seitenfenster“, in dem Sie Ihre Projektdateien einfach durchsuchen können. NERDTree hat dich dorthin gebracht. NERDTree ist ein vollwertiger Dateisystem-Explorer, mit dem Sie Ihre Dateien mithilfe eines Seitenfensters im Baumstil visuell durchsuchen können. Mit NERDTree können Sie Dateien schnell zum Lesen oder Bearbeiten öffnen und grundlegende Dateisystemoperationen ausführen.

Installation und Setups

Sie können NERDTree wie vim-go und coc installieren.nvim. Fügen Sie einfach Plug 'preservim/nerdtree' zu .vimrc hinzu und führen Sie :PlugInstall oder vim +PlugInstall über die Befehlszeile aus.

Darüber hinaus können Sie Wiki-FAQs für Setups auschecken. Meine Setups für NERDTree sind ähnlich wie:

Sie können ein Verzeichnis mit vim . in vim öffnen (ähnlich wie code . für VSCode). Sie können zwischen NERDTree und Ihrem Code wechseln, indem Sie CTRL+ww oder CTRL+w+ArrowKey . NERDTree verfügt über eine integrierte Dokumentation, die Sie überprüfen können, indem Sie ? drücken, wenn Sie sich im NERDTree-Fenster befinden.

So sieht mein Vim-Setup mit NERDTree aus:

Sie können sich meine .vimrc – und vim-Skripte auf GitHub unter jogendra/dotfiles/vim ansehen.

Hier sind einige Links, die Ihnen den Einstieg in Vim erleichtern:

  • OpenVim – Interaktive Vim-Tutorials
  • Beste Vim-Tipps von Fandom
  • Warum, oh WARUM, benutzen diese Verrückten vi?
  • Sammlung von Vim-Artikeln von thoughtbot
  • spf13-vim – Die ultimative Vim-Distribution
  • Vim Cheatsheet
  • Vim Tab Madness. Puffer vs Tabs

Sie können vimtutor einfach in Ihrer Befehlszeile ausführen, indem Sie den Befehl vimtutor ausführen. Es öffnet Vim-Tutorials und hilft Ihnen, damit zu beginnen.

Fazit

Die Verwendung von vim macht Spaß. Anfangs haben Sie möglicherweise Probleme mit der Verwendung und müssen möglicherweise lernen, wie man es benutzt, aber es lohnt sich auf jeden Fall, es zu lernen. Zumindest können Sie vim neben der Verwendung einer IDE weiter lernen. Beginnen Sie mit dem Minimum und bauen Sie jeden Tag ein wenig darauf auf. Es gibt viele Plugins für alles, was Sie mit Vim benötigen. Die Verwendung von vim für die Golang-Entwicklung ist mit dem vim-go-Plugin super nett. Ist es nicht schön, alles an einem Ort zu haben und produktiver zu sein?

Danke fürs Lesen. Teilen Sie mit Ihren Kollegen / Freunden. Sie können mich auf Twitter erreichen.



+