Använda vim för Go-utveckling

som programmerare spenderar du mycket tid med textredigerare, Ide, etc för att koda. Så det är viktigt vad och hur du använder det. Jag flyttade nyligen till Vim för Go-utveckling och jag älskar det helt. Ursprungligen använde jag VSCode med GO-förlängning och efter det använde jag GoLand ett tag. Visual Studio Code och GoLand båda är helt fantastisk, jag älskade att använda dem också. Det tar definitivt lite tid att lära sig att använda vim men det är värt att lära sig. Det är helt upp till dig vad som fungerar bättre för dig. Använd inte vim bara för att andra använder det. Jag är väldigt mycket en nybörjare till vim och saker jag kommer att förklara i detta är vad jag lärde mig efter att jag började använda den. Jag skulle vara riktigt glad om du är en lång tid vim användare och har några goda råd/förslag. Du kan lägga dem i kommentarsektionen i det här inlägget. Om du är nybörjare kommer jag att lägga några bra resurser för att lära oss vim längst ner i det här inlägget.

OBS: Detta inlägg är Ursprungligen postat den https://jogendra.dev.

Varför använder folk Vim?

  • Vim är garanterat att existera på alla Unix-system (i princip är det tillgängligt på alla större plattformar). Det är överallt, och det är detsamma på alla plattformar. Vim stöder alla filformat och programmeringsspråk, inget behov av att ladda ner olika IDE för olika programmeringsspråk.
  • mus fri navigering. Dina fingrar behöver sällan lämna hemraden, vilket innebär att du kan redigera text mycket, mycket snabbt. Du kan göra nyckelkartläggning enligt din bekvämlighet. Att inte behöva växla mellan tangentbord och mus är definitivt trevligt med vim.
  • Vim är mycket lätt och snabb. Vim kan enkelt hantera stora filer men Visual Studio eller annan IDE kunde inte hantera dem smidigt. Försök att öppna en stor fil (~20mb) med din favorit icke-vim textredigerare och vim, du kommer definitivt att lära känna skillnaden. Det finns stor kraft i hur Vim hanterar filer (buffertar), splittringar (windows) och layouter (flikar), den kraft som du inte kan få i andra redaktörer.
  • vim och Vim som textredigerare (emacs, nano, etc) känner och ser så infödda ut, ingen distraktion. Jag behöver inte växla mellan terminalen och redaktören/IDE. Det är helt enkelt allt på ett ställe. Det är ganska lätt att vara produktiv i vim med liten ansträngning.
  • Vim är mycket praktiskt när du måste göra snabba konfigurations eller andra ändringar på fjärrmaskinen/servern. Även på din egen maskin öppnar du inte en tung textredigerare för liten förändring.
  • Vim är mycket konfigurerbar. Du kan helt enkelt använda ~/.vimrc för att åsidosätta standardkonfigurationer och anpassa din. Vim plugins ger allt till vim som du behöver i en textredigerare. Komplettera automatiskt, syntaxmarkering, eller någon annan funktion du namnge det och det är tillgängligt, Du behöver bara rätt plug-in.
  • att använda vim är kul. Det är lite utmanande att använda i början, men det blir kul när du vänjer dig.

Låt oss gå!

i det här inlägget kommer vi att utforska att ställa in Vim som en fullfjädrad IDE för Go-utveckling. Plugins vi kommer att använda är:

  • vim-go: gå utveckling plugin för vim. Den har allt du behöver för Go-utveckling.
  • NERDTree – filsystem explorer för Vim. Det gör att du visuellt kan bläddra i komplexa kataloghierarkier, snabbt öppna filer för läsning eller redigering och utföra grundläggande filsystemoperationer.

🔌 vim-Go

Vim-Go är den mest populära och mest använda vim plugin för Go utveckling. Det erbjuder nästan alla funktioner du kan behöva. Några av dem är:

  • kompilera ditt paket med :GoBuild, installera det med :GoInstalleller testa det med :GoTest.
  • kör snabbt din nuvarande fil(er) med :GoRun.
  • syntaxmarkering och vikning.
  • automatisk komplettering stöd via gopls.
  • kör gofmt och goimports på Spara. Betyder att du inte behöver oroa dig för att importera paket och kodformatering, vim-go kommer att göra det åt dig när du sparar filen.
  • gå till symbol/deklaration med :GoDef och leta upp dokumentation med :GoDoceller :GoDocBrowser.
  • kontrollera kod täckning, gör kod linting etc.

du kan kontrollera alla funktioner som erbjuds av vim-go här.

installera vim-go

Vim 8 lagt inbyggt stöd för paket vilket innebär att du kan ladda plugins genom att bara klona innehållet i din ~/.vim katalog. För att installera vim-go kan du helt enkelt köra kommandot:

git clone https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go
ange fullskärmsläge avsluta fullskärmsläge

du måste också installera alla nödvändiga binärer. vim-go gör det enkelt att installera dem alla genom att tillhandahålla ett kommando, :GoInstallBinaries, vilket kommer att go get alla nödvändiga binärer.

eller så kan du sätta plugin i din ~/.vimrc.

call plug#begin()Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }call plug#end()
ange fullskärmsläge avsluta fullskärmsläge

spara nu .vimrc och installera plugin genom att köra vim +PlugInstall. Det kommer att installera vim-go plugin med alla nödvändiga binärer.

jag har lagt till följande vim-go-relaterade direktiv till min .vimrc, för att göra det mer användbart:

du kan besöka officiella handledning för dina egna anpassningar. Kompletta vim-go-dokumentationer finns i din vim-redigerare, du kan helt enkelt köra :help vim-go för att kolla in dem. Så här Letar min vim efter ett Go-program efter installation och konfigurering av vim-go:

vacker?

automatisk komplettering

det är verkligen svårt att koda utan automatisk komplettering och inte kunna gå till definitionen. Vim-go kan använda gopls för slutförande etc. Slutförande är aktiverat som standard via omnifunc. Medan du är i INSERT – läge kan du utlösa slutförande med Ctrl-x Ctrl-p. Om matchande namn hittas öppnas en popup-meny som kan navigeras med knapparna Ctrl-n och Ctrl-p.
för att kontrollera om vim-go ’ s ftplugin/go.vim har konfigurerats korrekt för automatisk komplettering kan du köra:

:verbose setlocal omnifunc?
ange fullskärmsläge avsluta fullskärmsläge

meddelandet nedan ska visas:

om du vill att autofullständig prompten ska visas automatiskt när du trycker på punkten (.) kan du lägga till följande rad i din .vimrc:

au filetype go inoremap <buffer> . .<C-x><C-o>
ange fullskärmsläge avsluta fullskärmsläge

nu ska typing erbjuda automatiska förslag tillsammans med förhandsgranskningar av dokumentation. Det borde se ut så här:

bortsett från vim-go completion, finns det några bra plugins som du kan använda för automatisk komplettering och andra LSP-funktioner. Några av dem är:

  • coc.nvim( Conquer of Completion): Intellisense motor för Vim8 & Neovim, fullt språk serverprotokoll stöd som VSCode.
  • LanguageClient-neovim: Minimal Språkserverprotokoll klient skriven i Rust.
  • YouCompleteMe: kod-slutförande motor. Den har flera kompletteringsmotorer.

Language Server Protocol (LSP) och gopl: er

Language Server Protocol används mellan ett verktyg (klienten) och en language smartness provider (servern) för att integrera funktioner som auto-complete, gå till definition, hitta alla referenser och lika i verktyget. Målet med protokollet är att tillåta programmeringsspråkstöd att implementeras och distribueras oberoende av en viss redaktör eller IDE. Språkserverprotokollet utvecklades ursprungligen för Microsofts Visual Studio Code och är nu en öppen standard. Microsoft samarbetade med Red Hat och Codenvy för att standardisera protokollets specifikation.

före LSP brukade det finnas olika IDE för olika språk (det finns fortfarande många). Varje Ide hade språkspecifik integration (syntaxmarkering, automatisk komplettering, gå till definition, etc funktioner). Situationen kallas ofta för ett m-problem, där antalet integrationer är en produkt av M-redaktörer och N-språk. Vad Language Server Protocol gör är att ändra detta m Macau N-problem till ett m + n-problem. Det bästa med LSP är att det är helt oberoende av IDEs. Som ett resultat kan vi se att Visual Studio fungerar för så många olika språk via tillägg. Dessa tillägg använder LSP.

du kan läsa mer om LSP här och henne eller titta på denna YouTube-video för att se hur det fungerar.

officiell Språkserver för Golang är gopl (uttalad: ”gå snälla”). Du kan kontrollera mer information om gopl: s status och dess funktioner som stöds.

bisexuell NERDTree

när du har ställt in många saker i din Vim, är en sak du förmodligen fortfarande saknar mest ”sidofönster” där du enkelt kan bläddra i dina projektfiler. NERDTree fick dig dit. NERDTree är en fullfjädrad filsystemutforskare, som hjälper till att visuellt bläddra bland dina filer med ett sidofönster i trädstil. Med NERDTree kan du snabbt öppna filer för läsning eller redigering och utföra grundläggande filsystemoperationer.

Installation och inställningar

du kan installera NERDTree samma som vim-go och coc.nvim. Lägg bara till Plug 'preservim/nerdtree' till .vimrc och kör :PlugInstall eller kör vim +PlugInstall från kommandoraden.

vidare kan du kassan wiki Vanliga frågor för inställningar. Mina inställningar för NERDTree liknar:

du kan öppna en katalog i vim med vim . (liknande code . för VSCode). Du kan växla mellan NERDTree och din kod genom att använda CTRL+ww eller CTRL+w+ArrowKey. NERDTree har inbyggd dokumentation, du kan kontrollera dem genom att trycka på ? när du är i NERDTree fönster.

så här ser min vim-inställning ut med NERDTree:

du kan titta på mina .vimrc och Vim-skript på GitHub på jogendra/dotfiles/vim.

här är några länkar som hjälper dig att komma igång med Vim:

  • OpenVim-interaktiva vim-Tutorials
  • bästa vim-Tips av Fandom
  • varför, Åh varför, använder dessa nutheads vi?
  • samling av Vim-artiklar av thoughtbot
  • spf13 – vim-den ultimata vim-distributionen
  • vim Cheatsheet
  • vim Tab Madness. Buffertar vs flikar

du kan helt enkelt köra vimtutor i kommandoraden genom att köra vimtutor kommando. Det öppnar vim-handledning och hjälper dig att komma igång med det.

bottenlinjer

att använda vim är kul. Ursprungligen kan du möta några problem med att använda det och du kan behöva lära dig hur du använder det men det är definitivt värt att lära dig det. Åtminstone kan du fortsätta lära vim tillsammans med att använda en IDE. Börja med det minsta och bygg lite på det varje dag. Det finns många plugins tillgängliga för allt du behöver med Vim. Använda vim för Golang utveckling är super trevligt med vim-go plugin. Är det inte trevligt att ha allt på ett ställe och vara mer produktiv?

Tack för att du läste. Dela med dina kollegor / vänner. Du kan nå ut till mig på Twitter.



+