Vai al contenuto

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:

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 Tree

  • 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).

Telescope find_files

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

Which Key

  • 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.


Ultimo aggiornamento: 29 ottobre 2022

Author: Franco Colussi

Contributors: Steven Spencer, Franco Colussi