Folosind Vim pentru dezvoltarea Go

ca programator, petreci mult timp folosind editori de text, IDE etc. pentru a codifica. Deci, este important ce și cum îl utilizați. M-am mutat recent la Vim pentru dezvoltarea Go și eu sunt total iubitor. Inițial, am fost folosind vscode cu extensia Go și după aceea, am folosit GoLand pentru un timp. Visual Studio Code și GoLand ambele sunt total minunat, mi-a plăcut să le folosesc prea. Este nevoie de ceva timp pentru a învăța folosind vim, dar merită învățarea. Depinde în totalitate de tine ce funcționează mai bine pentru tine. Nu utilizați vim doar pentru că alții îl folosesc. Sunt foarte mult un incepator la vim și lucruri am de gând să explice în acest lucru este ceea ce am învățat după ce am început să-l utilizați. Aș fi foarte bucuros dacă sunteți un utilizator Vim de mult timp și aveți câteva sfaturi/sugestii bune. Le puteți pune în secțiunea de comentarii a acestei postări. Dacă sunteți începător, voi pune câteva resurse bune pentru învățarea vim în partea de jos a acestui post.

Notă: Acest post este postat inițial pe https://jogendra.dev.

de ce oamenii folosesc Vim?

  • Vim este garantat să existe pe toate sistemele Unix (practic, este disponibil pe fiecare platformă majoră). Este peste tot și este la fel pe toate platformele. Vim acceptă toate formatele de fișiere și limbaje de programare, nu este nevoie să descărcați diferite IDE-uri pentru diferite limbaje de programare.
  • Navigare gratuită cu Mouse-ul. Degetele dvs. foarte rar trebuie să părăsească rândul de acasă, ceea ce înseamnă că veți putea edita text foarte, foarte repede. Puteți face cartografiere cheie în funcție de confortul dumneavoastră. Nu trebuie să comutați între tastatură și mouse este cu siguranță frumos cu Vim.
  • Vim este foarte ușor și rapid. Vim poate gestiona cu ușurință fișiere mari, dar Visual Studio sau alt IDE nu le-a putut gestiona fără probleme. Încercați să deschideți un fișier mare (~20MB) cu editorul dvs. preferat de text non-vim și vim, veți cunoaște cu siguranță diferența. Există o mare putere în modul în care vim gestionează fișiere (tampoane), împărțiri (windows) și machete (file), puterea pe care nu o puteți obține în alți editori.
  • vim și vim ca editorii de text (emacs, nano, etc) simt și arată atât de nativ, fără distragere a atenției. Nu trebuie să comut între terminal și editor/IDE. Este pur și simplu totul într-un singur loc. Este destul de ușor să fii productiv în vim cu puțin efort.
  • Vim este foarte util atunci când trebuie să efectuați modificări configuraționale rapide sau alte modificări ale mașinii/serverului la distanță. Chiar și pe propria mașină, nu veți deschide un editor de text greu pentru mici schimbări.
  • Vim este extrem de configurabil. Puteți utiliza pur și simplu ~/.vimrc pentru a suprascrie configurațiile implicite și pentru a vă personaliza. Pluginurile Vim oferă totul vim de care aveți nevoie într-un editor de text. Completarea automată, evidențierea sintaxei sau orice altă caracteristică pe care o numiți și este disponibilă, aveți nevoie doar de plug-in-ul potrivit.
  • utilizarea vim este distractiv. Este un pic dificil de utilizat inițial, dar devine distractiv odată ce te obișnuiești.

să mergem!

în acest post, vom explora configurarea Vim ca un IDE cu drepturi depline pentru dezvoltarea Go. Pluginurile pe care le vom folosi sunt:

  • vim-go: plugin de dezvoltare Go pentru Vim. Are tot ce aveți nevoie pentru dezvoltarea Go.
  • NERDTree – explorator de sistem de fișiere pentru Vim. Vă permite să răsfoiți vizual ierarhii complexe de directoare, să deschideți rapid fișiere pentru citire sau editare și să efectuați operații de bază ale sistemului de fișiere.

🔌 Vim-Go

Vim-Go este cel mai popular și cel mai utilizat plugin vim pentru dezvoltarea Go. Acesta oferă aproape toate caracteristicile de care aveți nevoie. Unele dintre ele sunt:

  • compilați pachetul cu :GoBuild, instalați-l cu :GoInstall sau testați-l cu :GoTest.
  • executați rapid fișierele curente cu :GoRun.
  • evidențierea sintaxei și pliere.
  • suport autocompletare prin gopls.
  • rulați gofmt și goimports pe Salvare. Înseamnă că nu trebuie să vă faceți griji cu privire la importul pachetelor și formatarea codului, vim-go va face asta pentru salvarea fișierului.
  • mergeți la simbol/declarație cu :GoDef și căutați documentația cu :GoDoc sau :GoDocBrowser.
  • verificați acoperirea codului, faceți lintarea codului etc.

puteți verifica toate caracteristicile oferite de vim-du-te aici.

instalarea vim-go

Vim 8 a adăugat suport nativ pentru pachete, ceea ce înseamnă că puteți încărca pluginuri doar clonând conținutul lor în directorul ~/.vim. Pentru a instala vim-go, puteți rula pur și simplu Comanda:

git clone https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go
intrați în modul ecran complet ieșiți din modul ecran complet

de asemenea, va trebui să instalați toate binarele necesare. vim-go facilitează instalarea tuturor prin furnizarea unei comenzi, :GoInstallBinaries, care va go get toate binarele necesare.

sau puteți pune pluginul în ~/.vimrc.

call plug#begin()Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }call plug#end()
intrați în modul ecran complet ieșiți din modul ecran complet

Acum salvați .vimrcși instalați pluginul rulând vim +PlugInstall. Acesta va instala vim-go plugin cu toate binarele necesare.

am adăugat următoarele directive vim-go legate de meu .vimrc, pentru a face mai util:

puteți vizita tutoriale oficiale pentru propriile personalizări. Documentații Complete vim-go sunt disponibile în editorul vim, puteți rula pur și simplu :help vim-go pentru a le verifica. Acesta este modul în care vim-ul meu caută un program Go după instalarea și configurarea vim-go:

frumos?

Completare automată

este foarte greu să codezi fără completare automată și să nu poți merge la definiție. Vim-go poate folosi gopls pentru finalizare etc. Finalizarea este activată implicit prin omnifunc. În timp ce vă aflați în modul INSERT, puteți declanșa finalizarea cu Ctrl-x Ctrl-p. Dacă se găsesc nume potrivite, se deschide un meniu pop-up care poate fi navigat folosind tastele Ctrl-n și Ctrl-p.
pentru a verifica dacă ftplugin/go.vim vim-go a fost configurat corect pentru completare automată, puteți rula:

:verbose setlocal omnifunc?
intrați în modul ecran complet ieșiți din modul ecran complet

mesajul de mai jos ar trebui să apară:

dacă doriți ca solicitarea de completare automată să apară automat ori de câte ori apăsați punctul (.), puteți adăuga următoarea linie la .vimrc:

au filetype go inoremap <buffer> . .<C-x><C-o>
intrați în modul ecran complet ieșiți din modul ecran complet

acum, tastarea ar trebui să ofere sugestii automate împreună cu previzualizările documentației. Ar trebui să arate ceva de genul asta:

în afară de finalizarea vim-go, există câteva pluginuri bune pe care le puteți utiliza pentru completarea automată și alte caracteristici LSP. Unele dintre ele sunt:

  • coc.nvim (Conquer de finalizare): motor Intellisense pentru Vim8 & Neovim, full language Server protocol de sprijin ca VSCode.
  • LanguageClient-neovim: Minimal Language Server Protocol client scris în Rust.
  • YouCompleteMe: motor de cod-finalizare. Are mai multe motoare de finalizare.

Language Server Protocol (LSP) și gopls

Language Server Protocol este utilizat între un instrument (client) și un furnizor de inteligență lingvistică (server) pentru a integra caracteristici precum completarea automată, accesați definiția, găsiți toate referințele și deopotrivă în instrument. Scopul protocolului este de a permite implementarea și distribuirea suportului limbajului de programare independent de orice editor sau IDE dat. Protocolul Language Server a fost inițial dezvoltat pentru Microsoft Visual Studio Code și este acum un standard deschis. Microsoft a colaborat cu Red Hat și Codenvy pentru a standardiza specificațiile protocolului.

înainte de LSP, existau IDE diferite pentru diferite limbi (încă există multe). Fiecare IDE a avut integrare specifică limbii (evidențierea sintaxei, completarea automată, trecerea la definiție etc.). Situația este adesea menționată ca o M Problema N, unde numărul de integrări este produsul m editori și n limbi. Ceea ce face protocolul serverului lingvistic este să schimbe această problemă M-N într-o problemă m + N. Cel mai bun lucru despre LSP este, este total independent de IDEs. Ca rezultat, putem vedea că Visual Studio funcționează pentru atât de multe limbi diferite prin extensii. Aceste extensii fac uz de LSP.

puteți citi mai multe despre LSP aici și despre ea sau puteți viziona acest videoclip YouTube pentru a vedea cum funcționează.

serverul de limbă oficială pentru Golang este gopls (pronunțat: „du-te te rog”). Puteți verifica mai multe informații despre starea gopls și caracteristicile sale acceptate.

NERDTree

după configurarea o mulțime de lucruri în Vim dvs., un lucru pe care, probabil, încă lipsește cel mai mult este „fereastra laterală”, unde puteți naviga fișierele de proiect cu ușurință. NERDTree te-a adus acolo. NERDTree este un explorator de sistem de fișiere cu drepturi depline, care vă ajută să răsfoiți vizual fișierele utilizând o fereastră laterală în stil arbore. Cu NERDTree, puteți deschide rapid fișiere pentru citire sau editare și puteți efectua operații de bază ale sistemului de fișiere.

instalare și setări

puteți instala NERDTree la fel ca vim-go și coc.nvim. Pur și simplu adăugați Plug 'preservim/nerdtree' la .vimrc și rulați :PlugInstall sau rulați vim +PlugInstall din linia de comandă.

mai departe, puteți checkout Wiki Întrebări frecvente pentru setari. Setările mele pentru NERDTree sunt similare cu:

puteți deschide un director în vim folosind vim .(similar cu code . pentru VSCode). Puteți comuta între NERDTree și codul utilizând CTRL+wwsau CTRL+w+ArrowKey. NERDTree are documentație încorporată, le puteți verifica apăsând ? când vă aflați în fereastra NERDTree.

așa arată configurarea mea Vim cu NERDTree:

puteți arunca o privire la scripturile Mele .vimrc și vim pe GitHub la jogendra/dotfiles/vim.

iată câteva linkuri care vă vor ajuta să începeți cu Vim:

  • OpenVim-tutoriale Interactive Vim
  • cele mai bune sfaturi Vim de către Fandom
  • de ce, oh de ce, nu aceste nutheads folosesc vi?
  • colecția de articole Vim de thoughtbot
  • spf13-vim – distribuția Vim finală
  • Vim Cheatsheet
  • Vim tab Madness. Tampoane vs file

puteți rula pur și simplu vimtutor în linia de comandă prin rularea vimtutor comandă. Se va deschide tutoriale Vim și vă va ajuta să începeți cu ea.

linii de fund

utilizarea vim este distractiv. Inițial, s-ar putea să vă confruntați cu o problemă de utilizare și este posibil să trebuiască să învățați cum să o utilizați, dar cu siguranță merită să o învățați. Cel puțin puteți continua să învățați vim alături de utilizarea unui IDE. Începeți cu minimul și construiți puțin pe el în fiecare zi. Există o mulțime de pluginuri disponibile pentru tot ce aveți nevoie cu Vim. Utilizarea vim pentru dezvoltarea Golang este super frumos cu vim-go plugin. Nu este frumos să ai totul într-un singur loc și să fii mai productiv?

Vă mulțumim pentru lectură. Împărtășește cu colegii/prietenii tăi. Puteți ajunge la mine pe Twitter.



+