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
.
La versione 2.0 introduce numerose novità. La nuova versione adotta lazy.nvim
come gestore di plugin al posto di packer.nvim
, questo comporta alcune modifiche per gli utenti della versione precedente con una configurazione personalizzata (custom folder).
lazy.nvim
consente una comoda gestione dei plugin attraverso un'interfaccia unificata e integra un meccanismo di sincronizzazione dei plugin tra le varie installazioni (lazy-lock.json).
NvChad memorizza la configurazione dei suoi plugin predefiniti nel file lua/plugins/init.lua. Le configurazioni aggiuntive dei vari plugin sono contenute nella cartella /nvim/lua/plugins/configs.
Di seguito possiamo vedere un estratto del file init.lua:
require "core"
-- All plugins have lazy=true by default,to load a plugin on startup just lazy=false
-- List of all default plugins & their definitions
local default_plugins = {
"nvim-lua/plenary.nvim",
{
"NvChad/base46",
branch = "v2.0",
build = function()
require("base46").load_all_highlights()
end,
},
{
"NvChad/ui",
branch = "v2.0",
lazy = false,
},
{
"NvChad/nvterm",
init = function()
require("core.utils").load_mappings "nvterm"
end,
config = function(_, opts)
require "base46.term"
require("nvterm").setup(opts)
end,
},
...
...
local lazypath = vim.fn.stdpath "data" .. "/lazy/lazy.nvim"
-- bootstrap lazy.nvim!
if not vim.loop.fs_stat(lazypath) then
require("core.bootstrap").gen_chadrc_template()
require("core.bootstrap").lazy(lazypath)
end
dofile(vim.g.base46_cache .. "defaults")
vim.opt.rtp:prepend(lazypath)
require "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.
-
NvChad/base46 - Fornisce i temi per l'interfaccia.
-
NvChad/ui - Fornisce l'interfaccia vera e propria e le utilità di base di NvChad. Grazie a questo plugin possiamo avere una statusline che ci dà le informazioni durante l'editing e una tabufline che ci permette di gestire i buffer aperti. Questo plugin fornisce anche le utilità NvChadUpdate per l'aggiornamento, NvCheatsheet per una panoramica delle scorciatoie da tastiera e Nvdash da cui è possibile eseguire operazioni sui file.
-
NvChad/nvterm - Fornisce un terminale all'IDE, dove si possono impartire 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 -
NvChad/nvim-colorizer.lua - Un altro plugin scritto dagli sviluppatori di NvChad. Si tratta in particolare di un evidenziatore di codice ad alte prestazioni.
-
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.
-
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. 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:
- hrsh7th/nvim-cmp
- L3MON4D3/LuaSnip
- snippet rafamadriz/friendly-
- 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. -
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.
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, Ganna Zhyrnova