Plugins della configurazione di base¶
Convenzione Nomenclatura Plugin
In questo capitolo, il formato user_github/nome_plugin sarà usato per identificare il plugin. Questo per evitare possibili errori con plugin dal nome simile e per introdurre il formato usato per l'inserimento dei plugin sia da NvChad che dalla configurazione custom.
NvChad mantiene la configurazione dei suoi plugin nel file lua/plugins/init.lua. Possiamo vedere un estratto qui sotto:
vim.cmd "packadd packer.nvim"
local plugins = {
  ["nvim-lua/plenary.nvim"] = { module = "plenary" },
  ["wbthomason/packer.nvim"] = {},
  ["NvChad/extensions"] = { module = { "telescope", "nvchad" } },
  ["NvChad/base46"] = {
    config = function()
      local ok, base46 = pcall(require, "base46")
      if ok then
        base46.load_theme()
      end
    end,
  },
...
...
require("core.packer").run(plugins)
Gli sviluppatori di NvChad hanno svolto un lavoro enorme che va riconosciuto. Hanno creato un ambiente integrato tra tutti i plugins che rende l'interfaccia utente pulita e professionale. Inoltre, i plugin che lavorano sotto il cofano consentono di migliorare l'editing e le altre funzioni.
Tutto ciò significa che gli utenti comuni possono disporre in un attimo di un IDE di base con cui iniziare a lavorare e di una configurazione estensibile che si adatta alle loro esigenze.
Plugins Principali¶
Di seguito è riportata una breve analisi dei principali plugins:
- 
nvim-lua/plenary.nvim - Fornisce una libreria di funzioni lua comunemente utilizzate dagli altri plugin, ad esempio telescope e gitsigns. 
- 
wbthomason/packer.nvim - Fornisce la funzionalità per la gestione dei plugin attraverso comodi comandi. I comandi forniti sono: 
- 
:PackerCompile
- :PackerClean
- :PackerInstall
- :PackerUpdate
- :PackerSync
- 
:PackerLoad
- 
NvChad/extensions - Le utilità di base di NvChad. Qui troviamo: 
- 
la cartella nvchad contenente le utilities, change_theme, reload_config, reload_theme, update_nvchad. 
- 
la cartella telescope/extension che permette di scegliere il tema direttamente da Telescope. 
- 
NvChad/base46 - Fornisce i temi per l'interfaccia. 
- 
NvChad/ui - Fornisce l'interfaccia vera e propria. Grazie a questo plugin possiamo avere una linea di stato che ci dà le informazioni durante l'editing e una tabufline che ci permette di gestire i buffer aperti. 
- 
NvChad/nvterm - Fornisce un terminale per il nostra IDE dove possiamo emettere comandi. Il terminale può essere aperto all'interno del buffer in vari modi: 
- 
<ALT-h>apre un terminale dividendo orizzontalmente il buffer
- <ALT-v>apre il terminale dividendo il buffer verticalmente
- 
<ALT-i>apre un terminale in una scheda fluttuante
- 
kyazdani42/nvim-web-devicons - Aggiunge icone (richiede uno dei Nerd Font) ai tipi di file e alle cartelle del nostro IDE. Questo ci permette di identificare visivamente i tipi di file nell'Esplora File, per velocizzare le operazioni. 
- 
lukas-reineke/indent-blankline.nvim - Fornisce delle guide per identificare meglio l'indentazione nel documento, permettendo di riconoscere facilmente le subroutine e i comandi annidati. 
- 
NvChad/nvim-colorizer.lua - Un altro plugin scritto dagli sviluppatori di NvChad. Si tratta in particolare di un evidenziatore di codice ad alta performance. 
- 
nvim-treesitter/nvim-treesitter - Permette di utilizzare l'interfaccia tree-sitter in Neovim e di fornire alcune funzionalità di base, come l'evidenziazione. 
- 
lewis6991/gitsigns.nvim - Fornisce una decorazione per git con rapporti per le linee aggiunte, rimosse e modificate, rapporti che sono anche integrati nella statusline. 
Funzionalità LSP¶
Ora passiamo ai plugin che forniscono la funzionalità per integrare i LSP (Language Server Protocols) nei nostri progetti. Questa è sicuramente una delle migliori caratteristiche fornite da NvChad. Grazie agli LSP possiamo avere il controllo di ciò che scriviamo in tempo reale.
- 
williamboman/mason.nvim - Consente una gestione semplificata dell'installazione di LSP (Language Server) attraverso una comoda interfaccia grafica. Il suo utilizzo è descritto nella pagina dedicata agli LSP. I comandi forniti sono: 
- 
:Mason
- :MasonInstall
- :MasonUninstall
- :MasonUnistallAll
- 
:MasonLog
- 
neovim/nvim-lspconfig - Fornisce le configurazioni appropriate per quasi tutti i server linguistici disponibili. Si tratta di una raccolta comunitaria, con le impostazioni più importanti già impostate. Il plugin si occupa di ricevere le nostre configurazioni e di inserirle nell'ambiente dell'editor. 
Fornisce i seguenti comandi:
- :LspInfo
- :LspStart
- :LspStop
- :LspRestart
Codice Lua¶
Dopo LSP, vengono tutti i plugin che forniscono funzionalità per la scrittura e l'esecuzione di codice Lua, come snippet, comandi LSP, buffer e così via. Non entreremo nel dettaglio di questi, ma possono essere visualizzati nei rispettivi progetti su GitHub.
I plugin sono:
- snippet rafamadriz/friendly-
- hrsh7th/nvim-cmp
- L3MON4D3/LuaSnip
- saadparwaiz1/cmp_luasnip
- hrsh7th/cmp-nvim-lua
- hrsh7th/cmp-nvim-lsp
- hrsh7th/cmp-buffer
- hrsh7th/cmp-path
Plugin Misti¶
- 
windwp/nvim-autopairs - Grazie a questo plugin abbiamo la funzionalità di chiusura automatica delle parentesi e di altri caratteri. Ad esempio, inserendo una parentesi iniziale (il completamento inserirà automaticamente la parentesi di chiusura)posizionando il cursore al centro.
- 
goolord/alpha-nvim - Fornisce una schermata iniziale da cui accedere ai file recenti, aprire l'ultima sessione, trovare i file, ecc. 
- 
numToStr/Comment.nvim - Fornisce funzionalità avanzate per il commento del codice. 
Gestione File¶
- kyazdani42/nvim-tree.lua - Un Esplora File per Neovim che consente le operazioni più comuni sui file (copia, incolla, ecc.), ha un'integrazione con Git, identifica i file con diverse icone e altre caratteristiche. Soprattutto, si aggiorna automaticamente (questo è molto utile quando si lavora con i repository Git).

- nvim-telescope/telescope.nvim - Fornisce funzionalità avanzate di ricerca dei file, è altamente personalizzabile e può anche essere usato (ad esempio) per selezionare i temi di NvChad (comando :Telescope themes).

- folke/which-key.nvim - Visualizza tutti i possibili autocompletamenti disponibili per il comando parziale inserito.

- lewis6991/impatient.nvim - Esegue diverse operazioni all'avvio dell'editor per rendere più veloce il caricamento dei moduli.
Dopo aver introdotto i plugin che costituiscono la configurazione di base di NvChad, possiamo passare alla descrizione dell'interfaccia.
Author: Franco Colussi
Contributors: Steven Spencer, Franco Colussi