Usando Vim per lo sviluppo Go

Come programmatore, trascorri molto tempo usando editor di testo, IDE, ecc. Quindi è importante cosa e come lo si utilizza. Recentemente mi sono trasferito a Vim per lo sviluppo Go e lo adoro. Inizialmente, stavo usando VSCode con estensione Go e dopo, ho usato GoLand per un po’. Visual Studio Code e GoLand sono entrambi fantastici, mi è piaciuto anche usarli. Ci vuole sicuramente un po ‘ di tempo per imparare usando vim ma ne vale la pena. Dipende totalmente da te cosa funziona meglio per te. Non usare vim solo perché altri lo stanno usando. Sono molto un principiante di vim e le cose che sto per spiegare in questo è quello che ho imparato dopo aver iniziato ad usarlo. Sarei davvero contento se sei un utente Vim da molto tempo e hai qualche buon consiglio/suggerimento. Puoi metterli nella sezione commenti di questo post. Se sei un principiante, metterò alcune buone risorse per l’apprendimento vim in fondo a questo post.

NOTA: Questo post è originariamente pubblicato su https://jogendra.dev.

Perché le persone usano Vim?

  • Vim è garantito per esistere su tutti i sistemi Unix (fondamentalmente, è disponibile su tutte le principali piattaforme). È ovunque, ed è lo stesso su tutte le piattaforme. Vim supporta tutti i formati di file e linguaggi di programmazione, non c ‘ è bisogno di scaricare diversi IDE per diversi linguaggi di programmazione.
  • Navigazione libera del mouse. Le dita molto raramente devono lasciare la riga di casa, il che significa che sarete in grado di modificare il testo molto, molto rapidamente. Si può fare mappatura dei tasti in base alla vostra convenienza. Non dover passare da tastiera e mouse è sicuramente bello con Vim.
  • Vim è molto leggero e veloce. Vim può gestire facilmente file di grandi dimensioni, ma Visual Studio o altri IDE non sono in grado di gestirli senza problemi. Prova ad aprire un file di grandi dimensioni (~20 MB) con il tuo editor di testo non vim preferito e vim, conoscerai sicuramente la differenza. C’è una grande potenza nel modo in cui Vim gestisce i file (buffer), le divisioni (windows) e i layout (schede), la potenza che non è possibile ottenere in altri editor.
  • Vim e vim come editor di testo (emacs, nano, ecc.) Non devo passare dal terminale all’editor / IDE. È semplicemente tutto in un unico posto. È abbastanza facile essere produttivi in vim con poco sforzo.
  • Vim è molto utile quando si deve fare una rapida configurazione o altre modifiche alla macchina/server remoto. Anche sulla tua macchina, non aprirai un editor di testo pesante per piccole modifiche.
  • Vim è altamente configurabile. Puoi semplicemente usare ~/.vimrc per ignorare le configurazioni predefinite e personalizzare le tue. I plugin Vim forniscono a vim tutto ciò di cui hai bisogno in un editor di testo. Completamento automatico, evidenziazione della sintassi, o qualsiasi altra caratteristica è il nome ed è disponibile, è sufficiente il giusto plug-in.
  • Usare vim è divertente. È un po ‘ difficile da usare inizialmente, ma diventa divertente una volta che ci si abitua.

Andiamo!

In questo post, esploreremo la creazione di Vim come IDE a tutti gli effetti per lo sviluppo Go. I plugin che useremo sono:

  • vim-go: plugin di sviluppo Go per Vim. Ha tutto il necessario per lo sviluppo Go.
  • NERDTree-Esplora file di sistema per il Vim. Consente di sfogliare visivamente gerarchie di directory complesse, aprire rapidamente i file per la lettura o la modifica ed eseguire operazioni di base del file system.

🔌 Vim-Go

Vim-Go è il plugin vim più popolare e più utilizzato per lo sviluppo di Go. Offre quasi tutte le funzionalità di cui potresti aver bisogno. Alcuni di loro sono:

  • Compila il tuo pacchetto con :GoBuild, installalo con :GoInstall o testalo con :GoTest.
  • Esegui rapidamente i tuoi file correnti con :GoRun.
  • Evidenziazione e piegatura della sintassi.
  • Supporto per il completamento automatico tramite gopls.
  • Esegui gofmt e goimports al salvataggio. Significa che non devi preoccuparti di importare pacchetti e formattazione del codice, vim-go lo farà per salvare il file.
  • Vai al simbolo/dichiarazione con :GoDef e cerca la documentazione con :GoDoc o :GoDocBrowser.
  • Controllare la copertura del codice, fare codice linting ecc.

Puoi controllare tutte le funzionalità offerte da vim-vai qui.

Installazione di vim-go

Vim 8 ha aggiunto il supporto nativo per i pacchetti, il che significa che puoi caricare i plugin semplicemente clonando il loro contenuto nella tua directory ~/.vim. Per installare vim-go, puoi semplicemente eseguire command:

git clone https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go
Entra in modalità schermo intero Esci dalla modalità schermo intero

Sarà inoltre necessario installare tutti i binari necessari. vim-go rende facile installare tutti loro fornendo un comando, :GoInstallBinaries, che sarà go get tutti i binari richiesti.

Oppure puoi inserire il plugin nel tuo ~/.vimrc.

call plug#begin()Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }call plug#end()
Entra in modalità schermo intero Esci dalla modalità schermo intero

Ora salva .vimrce installa il plugin eseguendo vim +PlugInstall. Installerà il plugin vim-go con tutti i binari necessari.

Ho aggiunto le seguenti direttive relative a vim-go al mio .vimrc, per renderlo più utile:

Puoi visitare i tutorial ufficiali per le tue personalizzazioni. Le documentazioni complete di vim-go sono disponibili nel tuo editor vim, puoi semplicemente eseguire :help vim-go per verificarle. Questo è il modo in cui il mio vim cerca un programma Go dopo aver installato e configurato vim-go:

Bella?

Completamento automatico

È davvero difficile codificare senza completamento automatico e non essere in grado di andare alla definizione. Vim-go può usare gopls per il completamento ecc. Il completamento è abilitato di default tramite omnifunc. Mentre si è in modalità INSERT, è possibile attivare il completamento con Ctrl-x Ctrl-p. Se vengono trovati nomi corrispondenti, si apre un menu a comparsa che può essere navigato utilizzando i tasti Ctrl-n e Ctrl-p.
Per verificare se il ftplugin/go.vim di vim-go è stato configurato correttamente per il completamento automatico, è possibile eseguire:

:verbose setlocal omnifunc?
Entra in modalità schermo intero Esci dalla modalità schermo intero

Dovrebbe apparire il messaggio qui sotto:

Se si desidera che il completamento automatico comandi vengono visualizzati automaticamente ogni volta che si preme il dot (.), è possibile aggiungere la seguente riga .vimrc:

au filetype go inoremap <buffer> . .<C-x><C-o>
Inserire schermo intero Esci dalla modalità schermo intero

Ora, digitare dovrebbe offrire auto suggerimenti, insieme alla documentazione anteprime. Dovrebbe assomigliare a questo:

Oltre al completamento di vim-go, ci sono alcuni buoni plugin che puoi usare per il completamento automatico e altre funzionalità LSP. Alcuni di loro sono:

  • coc.nvim( Conquer of Completion): Motore Intellisense per Vim8 & Neovim, supporto del protocollo server di lingua completa come VSCode.
  • LanguageClient-neovim: client di protocollo server di linguaggio minimo scritto in Rust.
  • YouCompleteMe: motore di completamento del codice. Ha diversi motori di completamento.

Language Server Protocol (LSP) e gopls

Il Language Server Protocol viene utilizzato tra uno strumento (il client) e un provider di smartness del linguaggio (il server) per integrare funzionalità come il completamento automatico, andare alla definizione, trovare tutti i riferimenti e simili nello strumento. L’obiettivo del protocollo è quello di consentire il supporto del linguaggio di programmazione da implementare e distribuito indipendentemente da qualsiasi editor o IDE. Il protocollo Language Server è stato originariamente sviluppato per il codice Visual Studio di Microsoft ed è ora uno standard aperto. Microsoft ha collaborato con Red Hat e Codenvy per standardizzare le specifiche del protocollo.

Prima di LSP, esistevano IDE diversi per lingue diverse (ce ne sono ancora molte). Ogni IDE aveva un’integrazione specifica per la lingua (evidenziazione della sintassi, completamento automatico, definizione, ecc.). La situazione è spesso definita come un problema M × N, in cui il numero di integrazioni è il prodotto degli editor M e delle lingue N. Ciò che fa il protocollo Language Server è cambiare questo problema M × N in un problema M + N. La cosa migliore di LSP è che è totalmente indipendente dagli IDE. Di conseguenza possiamo vedere che Visual Studio funziona per così tante lingue diverse tramite estensioni. Queste estensioni fanno uso di LSP.

Si può leggere di più su LSP qui e lei o guardare questo video di YouTube per vedere come funziona.

Server di lingua ufficiale per Golang è gopls (pronunciato: “vai per favore”). È possibile controllare ulteriori informazioni sullo stato di gopls e le sue funzionalità supportate.

N NERDTree

Dopo aver impostato un sacco di cose nel tuo Vim, una cosa che probabilmente ti manca ancora di più è “Finestra laterale” in cui puoi sfogliare facilmente i tuoi file di progetto. NERDTree ti ha portato li’. NERDTree è un file system explorer a tutti gli effetti, che aiuta a sfogliare visivamente i file utilizzando una finestra laterale in stile albero. Con NERDTree, è possibile aprire rapidamente i file per la lettura o la modifica, ed eseguire operazioni di base del file system.

Installazione e configurazioni

È possibile installare NERDTree come vim-go e coc.nvim. Basta aggiungere Plug 'preservim/nerdtree' a .vimrc ed eseguire :PlugInstall o eseguire vim +PlugInstall dalla riga di comando.

Inoltre, puoi controllare le FAQ wiki per le impostazioni. Le mie impostazioni per NERDTree sono simili a:

È possibile aprire una directory in vim utilizzando vim . (simile a code . per VSCode). Puoi passare da NERDTree al tuo codice usando CTRL+ww o CTRL+w+ArrowKey. NERDTree ha una documentazione integrata, puoi controllarli premendo ? quando sei nella finestra di NERDTree.

Ecco come appare la mia configurazione Vim con NERDTree:

Puoi dare un’occhiata ai miei script .vimrc e vim su GitHub su jogendra/dotfiles/vim.

Ecco alcuni link che ti aiuteranno a iniziare con Vim:

  • OpenVim – Tutorial Vim interattivi
  • I migliori consigli Vim di Fandom
  • Perché, oh PERCHÉ, quei nutheads usano vi?
  • Raccolta di articoli Vim di thoughtbot
  • spf13-vim – L’ultima distribuzione Vim
  • Vim Cheatsheet
  • Vim Tab Madness. Buffers vs Tabs

Puoi semplicemente eseguire vimtutor nella tua riga di comando eseguendo il comando vimtutor. Si aprirà tutorial Vim e vi aiuterà a iniziare con esso.

Linee di fondo

Usare vim è divertente. Inizialmente, si può affrontare qualche problema con esso e potrebbe essere necessario imparare ad usarlo, ma è sicuramente la pena di imparare. Almeno puoi continuare a imparare vim insieme all’utilizzo di un IDE. Inizia con il minimo e costruisci un po ‘ su di esso ogni giorno. Ci sono molti plugin disponibili per tutto ciò di cui hai bisogno con Vim. Utilizzando vim per lo sviluppo Golang è super bello con vim-go plugin. Non è bello avere tutto in un posto ed essere più produttivi?

Grazie per la lettura. Non condividere con i tuoi colleghi/amici. Puoi contattarmi su Twitter.



+