Brug af Vim til Go-udvikling

som programmør bruger du meget tid på at bruge teksteditorer, ide ‘ er osv. Så det er vigtigt, hvad og hvordan du bruger det. Jeg flyttede for nylig til Vim for Go-udvikling, og jeg elsker det helt. Oprindeligt brugte jeg VSCode med GO-udvidelse, og derefter brugte jeg GoLand i et stykke tid. Visual Studio Code og GoLand begge er helt fantastisk, jeg elskede at bruge dem også. Det tager bestemt noget tid at lære at bruge vim, men det er værd at lære. Det er helt op til dig, hvad der fungerer bedre for dig. Brug ikke vim, bare fordi andre bruger det. Jeg er meget nybegynder til vim, og ting, jeg vil forklare i dette, er hvad jeg lærte, efter at jeg begyndte at bruge det. Jeg ville være rigtig glad, hvis du er en lang tid Vim bruger og har nogle gode råd/forslag. Du kan placere dem i kommentarafsnittet i dette indlæg. Hvis du er nybegynder, vil jeg lægge nogle gode ressourcer til at lære vim i bunden af dette indlæg.

BEMÆRK: Dette indlæg er oprindeligt udgivet på https://jogendra.dev.

Hvorfor bruger folk vim?

  • Vim er garanteret at eksistere på alle unikke systemer (dybest set er den tilgængelig på alle større platforme). Det er overalt, og det er det samme på alle platforme. Vim understøtter alle filformater og programmeringssprog, ingen grund til at hente forskellige IDE ‘ er til forskellige programmeringssprog.
  • mus gratis navigation. Dine fingre er meget sjældent nødt til at forlade hjemmet, hvilket betyder, at du kan redigere tekst meget, meget hurtigt. Du kan gøre nøglekortlægning i henhold til din bekvemmelighed. Ikke at skulle skifte mellem tastatur og mus er bestemt rart med vim.
  • Vim er meget let og hurtig. Vim kan nemt håndtere store filer, men Visual Studio eller anden IDE kunne ikke håndtere dem glat. Prøv at åbne en stor fil (~20mb) med din foretrukne ikke-Vim teksteditor og vim, du vil helt sikkert lære forskellen at kende. Der er stor magt i den måde, Vim håndterer filer (buffere), splits (vinduer) og layout (faner), den magt, du ikke kan få i andre redaktører.
  • Vim og Vim som tekstredaktører (emacs, nano osv.) føler og ser så indfødte ud, ingen distraktion. Jeg behøver ikke at skifte mellem terminalen og editor/IDE. Det er simpelthen alt på et sted. Det er ret nemt at være produktiv i Vim med lidt indsats.
  • Vim er meget praktisk, når du skal foretage hurtig konfiguration eller andre ændringer på fjernmaskinen/serveren. Selv på din egen maskine åbner du ikke en tung teksteditor til små ændringer.
  • Vim er meget konfigurerbar. Du kan blot bruge ~/.vimrc til at tilsidesætte standardkonfigurationer og tilpasse din. Vim plugins giver alt til vim, som du har brug for i en teksteditor. Autofuldførelse, syntaksfremhævning eller enhver anden funktion, du navngiver den, og den er tilgængelig, Du skal bare bruge den rigtige plug-in.
  • brug af vim er sjovt. Det er lidt udfordrende at bruge i starten, men det bliver sjovt, når du er vant til det.

lad os gå!

i dette indlæg vil vi undersøge opsætning af Vim som en fuldgyldig IDE til Go-udvikling. Plugins, vi skal bruge, er:

  • Vim-go: Go udvikling plugin til Vim. Det har alt hvad du behøver for Go-udvikling.
  • NERDTree – filsystemudforsker til Vim. Det giver dig mulighed for visuelt at gennemse komplekse kataloghierarkier, hurtigt åbne filer til læsning eller redigering og udføre grundlæggende filsystemoperationer.

🔌 Vim-Go

Vim-Go er det mest populære og mest anvendte Vim-plugin til Go-udvikling. Det tilbyder næsten alle de funktioner, du muligvis har brug for. Nogle af dem er:

  • kompiler din pakke med :GoBuild, installer den med :GoInstalleller test den med :GoTest.
  • udfør hurtigt din(e) aktuelle fil (er) med :GoRun.
  • syntaksfremhævning og foldning.
  • autofuldførelse støtte via gopls.
  • Kør gofmt og goimports på Gem. Betyder, at du ikke behøver at bekymre dig om at importere pakker og kodeformatering, vim-go vil gøre det for dig at gemme filen.
  • gå til symbol/erklæring med :GoDef og slå dokumentation op med :GoDoceller :GoDocBrowser.
  • Tjek kode dækning, gør kode linting etc.

du kan tjekke alle de funktioner, der tilbydes af vim-gå her.

installation af vim-go

Vim 8 tilføjet indbygget support til pakker, hvilket betyder, at du kan indlæse plugins ved blot at klone deres indhold i din ~/.vim mappe. For at installere Vim-go kan du blot køre kommando:

git clone https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go
gå ind i fuldskærmstilstand Afslut fuldskærmstilstand

du skal også installere alle de nødvendige binære filer. vim-go gør det nemt at installere dem alle ved at give en kommando, :GoInstallBinaries, som vil go get alle de nødvendige binære filer.

eller du kan sætte plugin i din ~/.vimrc.

call plug#begin()Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }call plug#end()
gå ind i fuldskærmstilstand Afslut fuldskærmstilstand

Gem nu .vimrcog installer plugin ved at køre vim +PlugInstall. Det vil installere Vim-go plugin med alle de nødvendige binære filer.

jeg har tilføjet følgende Vim-go relaterede direktiver til min .vimrc, for at gøre det mere nyttigt:

du kan besøge officielle tutorials til dine egne tilpasninger. Komplette Vim-go-dokumentationer er tilgængelige i din Vim-editor, Du kan simpelthen køre :help vim-go for at tjekke dem ud. Sådan ser min vim efter et Go-programm efter installation og konfiguration af vim-go:

smuk?

automatisk færdiggørelse

det er virkelig svært at kode uden automatisk færdiggørelse og ikke være i stand til at gå til definitionen. Vim-go kan bruge gopls til færdiggørelse osv. Afslutning er aktiveret som standard via omnifunc. Mens du er i INSERT – tilstand, kan du udløse færdiggørelse med Ctrl-x Ctrl-p. Hvis der findes matchende navne, åbnes en pop op-menu, som kan navigeres ved hjælp af tasterne Ctrl-n og Ctrl-p.
for at kontrollere, om vim-go ‘ s ftplugin/go.vim er konfigureret korrekt til autofuldførelse, kan du køre:

:verbose setlocal omnifunc?
gå ind i fuldskærmstilstand Afslut fuldskærmstilstand

meddelelsen nedenfor skal vises:

hvis du vil have, at autofuldførelsesprompten skal vises automatisk, når du trykker på prikken (.), kan du tilføje følgende linje til din .vimrc:

au filetype go inoremap <buffer> . .<C-x><C-o>
gå ind i fuldskærmstilstand Afslut fuldskærmstilstand

nu, skrive bør tilbyde auto forslag sammen med dokumentation forhåndsvisninger. Det skal se sådan ud:

bortset fra Vim-go færdiggørelse, der nogle gode plugins, som du kan bruge til auto-færdiggørelse og andre LSP funktioner. Nogle af dem er:

  • coc.nvim( erobring af færdiggørelse): Intellisense-motor til Vim8 & Neovim, understøttelse af fuld sprogserverprotokol som VSCode.
  • LanguageClient-neovim: Minimal Sprogserverprotokolklient skrevet i Rust.
  • YouCompleteMe: kode-færdiggørelse motor. Det har flere færdiggørelsesmotorer.

Language Server Protocol (LSP) og gopls

Sprogserverprotokollen bruges mellem et værktøj (klienten) og en sprogsmarthedsudbyder (serveren) til at integrere funktioner som auto-complete, gå til definition, finde alle referencer og lignende i værktøjet. Målet med protokollen er at tillade understøttelse af programmeringssprog, der skal implementeres og distribueres uafhængigt af en given editor eller IDE. Sprogserverprotokollen blev oprindeligt udviklet til Microsofts Visual Studio-kode og er nu en åben standard. Microsoft samarbejdede med Red Hat og Codenvy for at standardisere protokollens specifikation.

før LSP var der tidligere forskellige IDE ‘ er til forskellige sprog (der er stadig mange). Hver ide ‘ er havde sprogspecifik integration (syntaksfremhævning, automatisk færdiggørelse, definition osv. Situationen omtales ofte som et M-Kris n-problem, hvor antallet af integrationer er et produkt af M-redaktører og n-Sprog. Hvad Sprogserverprotokollen gør, er at ændre dette M-LARP n-problem til et m + n-problem. Det bedste ved LSP er, det er helt uafhængigt af IDE ‘ er. Som et resultat kan vi se, at Visual Studio fungerer til så mange forskellige sprog via udvidelser. Disse udvidelser gør brug af LSP.

du kan læse mere om LSP her og her eller se denne YouTube-video for at se, hvordan det virker.

Officiel Sprogserver for Golang er gopls (udtalt: “gå venligst”). Du kan kontrollere flere oplysninger om status for gopls og dens understøttede funktioner.

Kurt NERDTree

efter at have oprettet en masse ting i din Vim, er en ting, du sandsynligvis stadig mangler mest, “sidevindue”, hvor du nemt kan gennemse dine projektfiler. NERDTree fik dig der. NERDTree er et fuldgyldigt filsystem opdagelsesrejsende, som hjælper til visuelt at gennemse dine filer ved hjælp af et træ-stil sidevindue. Med NERDTree kan du hurtigt åbne filer til læsning eller redigering og udføre grundlæggende filsystemoperationer.

Installation og opsætninger

du kan installere NERDTree samme som vim-go og coc.nvim. Du skal blot tilføje Plug 'preservim/nerdtree' til .vimrc og køre :PlugInstall eller køre vim +PlugInstall fra kommandolinjen.

yderligere kan du tjekke ofte stillede spørgsmål om opsætninger. Mine opsætninger til NERDTree ligner:

du kan åbne en mappe i vim ved hjælp af vim . (svarende til code . for VSCode). Du kan skifte mellem NERDTree og din kode ved at bruge CTRL+ww eller CTRL+w+ArrowKey. NERDTree har indbygget dokumentation, du kan kontrollere dem ved at trykke på ? når du er i nerdtree-vinduet.

Sådan ser min Vim-opsætning ud med NERDTree:

du kan få et kig på mine .vimrc og vim scripts på GitHub på jogendra/dotfiles / vim.

her er nogle links, der hjælper dig med at komme i gang med Vim:

  • OpenVim-Interactive Vim Tutorials
  • bedste Vim Tips af Fandom
  • hvorfor, Åh hvorfor, bruger disse nutheads vi?
  • samling af vim artikler af thoughtbot
  • spf13-vim – den ultimative Vim Distribution
  • Vim Cheatsheet
  • Vim Tab Madness. Buffere vs faner

du kan simpelthen køre vimtutor i din kommandolinje ved at køre vimtutor kommando. Det åbner Vim-tutorials og hjælper dig med at komme i gang med det.

bundlinjer

brug af vim er sjovt. I første omgang kan du have et problem med at bruge det, og du skal muligvis lære at bruge det, men det er absolut værd at lære det. I det mindste kan du fortsætte med at lære vim sammen med at bruge en IDE. Start med minimumet og bygg lidt på det hver dag. Der er mange plugins tilgængelige til alt hvad du har brug for med vim. Brug af Vim til Golang udvikling er super flot med vim-go plugin. Er det ikke rart at have alt på et sted og være mere produktiv?

tak for læsning. Del med dine kolleger/venner. Du kan kontakte mig på kvidre.



+