Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 147 additions & 0 deletions docs/books/nvchad/nvchad_ui/builtin_plugins.it.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
---
title: Plugin Integrati
author: Franco Colussi
contributors: Steven Spencer, Franco Colussi
tested with: 8.6, 9.0
tags:
- nvchad
- coding
- plugins
---

# Plugins della configurazione di base

!!! nota "Convenzione Nomeclatura 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:

```lua
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](https://github.com/nvim-lua/plenary.nvim) - Fornisce una libreria di funzioni lua comunemente utilizzate dagli altri plugin, ad esempio *telescope* e *gitsigns*.

- [wbthomason/packer.nvim](https://github.com/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](https://github.com/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](https://github.com/NvChad/base46) - Fornisce i temi per l'interfaccia.

- [NvChad/ui](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](https://github.com/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](../custom/lsp.md). I comandi forniti sono:

- `:Mason`
- `:MasonInstall`
- `:MasonUninstall`
- `:MasonUnistallAll`
- `:MasonLog`

- [neovim/nvim-lspconfig](https://github.com/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-](https://github.com/rafamadriz/friendly-snippets)
- [hrsh7th/nvim-cmp](https://github.com/hrsh7th/nvim-cmp)
- [L3MON4D3/LuaSnip](https://github.com/L3MON4D3/LuaSnip)
- [saadparwaiz1/cmp_luasnip](https://github.com/saadparwaiz1/cmp_luasnip)
- [hrsh7th/cmp-nvim-lua](https://github.com/hrsh7th/cmp-nvim-lua)
- [hrsh7th/cmp-nvim-lsp](https://github.com/hrsh7th/cmp-nvim-lsp)
- [hrsh7th/cmp-buffer](https://github.com/hrsh7th/cmp-buffer)
- [hrsh7th/cmp-path](https://github.com/hrsh7th/cmp-path)

## Plugin Misti

- [windwp/nvim-autopairs](https://github.com/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](https://github.com/goolord/alpha-nvim) - Fornisce una schermata iniziale da cui accedere ai file recenti, aprire l'ultima sessione, trovare i file, ecc.

- [numToStr/Comment.nvim](https://github.com/numToStr/Comment.nvim) - Fornisce funzionalità avanzate per il commento del codice.

## Gestione File

- [kyazdani42/nvim-tree.lua](https://github.com/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](../images/nvim_tree.png)

- [nvim-telescope/telescope.nvim](https://github.com/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](../images/telescope_find_files.png)

- [folke/which-key.nvim](https://github.com/folke/which-key.nvim) - Visualizza tutti i possibili autocompletamenti disponibili per il comando parziale inserito.

![Which Key](../images/which_key.png)

- [lewis6991/impatient.nvim](https://github.com/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.
110 changes: 110 additions & 0 deletions docs/books/nvchad/nvchad_ui/nvchad_ui.it.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
title: NvChad UI
author: Franco Colussi
contributors: Steven Spencer, Franco Colussi
tested: 8.6, 9.0
tags:
- nvchad
- coding
- interfaccia nvchad
---

# Interfaccia NvChad

!!! note "Qualche parola su `mappings.lua`"

Nella documentazione ufficiale di NvChad, vengono citati comandi come `<leader>`, insieme ad altri tasti che potrebbero non essere comprensibili al lettore occasionale. Il motivo è il file `mappings.lua` predefinito (`../nvim/lua/core/mappings.lua`).

Questo file e le mappature delle chiavi che descrive sono delineati [here](https://nvchad.com/config/Mappings). Per essere chiaro, puoi sovrascrivere qualsiasi mappatura di tasti usando un file `mappings.lua` personalizzato (`../nvim/lua/custom/mappings.lua`).

Per evitare confusione nei documenti che state leggendo, assumeremo che stiate usando il file predefinito `mappings.lua` e sostituiremo i comandi effettivi che dovete usare per accedere a una funzione. I riferimenti chiave standard sono:

* leader = <kbd>SPAZIO</kbd>
* A = <kbd>ALT</kbd>
* C = <kbd>CTRL</kbd>
* S = <kbd>SHIFT</kbd>

Se un comando specifica `<leader>uu` come esempio, sostituiremo la combinazione di tasti attuale con <kbd>SPAZIO</kbd><kbd>uu</kbd>.

Questo aspetto verrà trattato nuovamente nella prossima sezione [Utilizzo di NvChad](./using_nvchad.md)

Una volta installato Neovim e inserita la configurazione di NvChad, l'IDE dovrebbe avere questo aspetto:

![NvChad Default](../images/ui_default.png)

L'interfaccia è già dotata di alcune funzionalità avanzate, come l'indicazione dello stato del repository git, ma può essere ulteriormente migliorata utilizzando i [Language Server](../custom/lsp.md) e personalizzata sovrascrivendo alcune configurazioni di base. I moduli di base che lo compongono sono illustrati di seguito.

## Tabufline

![Tabufline](../images/ui_tabufline.png)

L'interfaccia utente presenta una barra superiore chiamata `Tabufline` in cui vengono gestiti i buffer aperti. La `tabufline` viene visualizzata solo se si ha più di un file aperto. Il buffer aperto presenta l'icona del tipo di file, il nome del file e il suo stato. Lo stato è indicato da un'icona.

Se, come nell'immagine, è presente una `x` rossa, significa che il file può essere chiuso in quanto già salvato. Se invece l'icona è un punto verde `.`, allora il file deve essere salvato e il comando di chiusura <kbd>SHIFT</kbd> + <kbd>:q</kbd> produrrà un avviso: "Nessuna scrittura dall'ultima modifica".

A destra si trova l'icona per impostare il tema _scuro_ o _chiaro_. Facendo clic su di esso con il mouse, è possibile selezionare il tema desiderato.

![NvChad Light](../images/ui_default_light.png)

A destra abbiamo anche l'icona per chiudere l'editor.

## Sezione Centrale - Buffer Aperti

La parte centrale dell'editor è composta dal buffer attivo nell'editor in quel momento (_index.en.md_). Per introdurre qualche funzionalità aggiuntiva, possiamo lavorare contemporaneamente su due file in un buffer diviso, aprendone un altro nell'esempio _(index.it.md_).

Nell'editor avremo il primo buffer in primo piano e il secondo elencato nella Tabufline. Ora se dividiamo il primo buffer con il comando <kbd>SHIFT</kbd> + <kbd>:vsplit</kbd> e selezioniamo il buffer di destra, facendo clic sul nome del secondo file_(index.it.md_) nella tabufline, questo verrà aperto nel buffer di destra e potremo lavorare con i due file fianco a fianco.

![NvChad Split](../images/ui_nvchad_split.png)

## Statusline

![Statusline](../images/ui_statusline.png)

In basso troviamo la linea di stato, che gestisce le informazioni di stato. Sulla destra troviamo lo stato dell'editor. Non dobbiamo dimenticare che stiamo utilizzando un editor di testo e che, in particolare, mantiene la filosofia e il funzionamento di Vim. Gli stati possibili sono:

- **NORMAL**
- **INSERT**
- **COMMAND**
- **VISUAL**

La modifica di un documento inizia dalla modalità **NORMAL** in cui si apre il file, quindi si può passare alla modalità **INSERT** per la modifica e, al termine, uscire con <kbd>ESC</kbd> e tornare alla modalità **NORMAL**.

Ora per salvare il file si passa alla modalità **COMMAND** digitando `:` nella riga di stato seguito da `w`_(write_) per scriverlo e con <kbd>ESC</kbd> si torna alla modalità **NORMAL**. L'indicazione dello stato è molto utile durante l'apprendimento dell'uso, soprattutto se non si ha molta familiarità con il flusso di lavoro di Vim.

Troviamo quindi il nome del file aperto e, se stiamo lavorando su un repository git, avremo indicazioni sullo stato del repository. Questo grazie al plugin _lewis6991/gitsigns.nvim._

A destra troviamo il nome della cartella da cui abbiamo aperto l'editor. Nel caso di utilizzo di LSP, indica la cartella che viene presa in considerazione come `workspace`, e di conseguenza valutata durante la diagnostica, e per seguire la posizione del cursore all'interno del file.

## Aiuto Integrato

NvChad e Neovim forniscono alcuni comandi utili per visualizzare le combinazioni di tasti preimpostate e le opzioni disponibili.

Se il tasto <kbd>SPAZIO</kbd> viene premuto da solo, viene visualizzata una legenda dei comandi associati, come nella seguente schermata:

![Chiave Dello Spazio](../images/ui_escape_key.png)

Per visualizzare tutti i comandi inclusi nell'editor si può usare il comando <kbd>SPAZIO</kbd> + <kbd>wK</kbd>, che darà il seguente risultato:

![leader wK](../images/ui_wK_key.png)

E premendo <kbd>d</kbd> possiamo visualizzare i rimanenti comandi:

![leader wK d](../images/ui_wK_01.png)

Come si può notare, quasi tutti i comandi si riferiscono alla navigazione all'interno del documento o del buffer. Non sono inclusi comandi per l'apertura del file. Questi sono forniti da Neovim.

Per visualizzare tutte le opzioni di Neovim, è disponibile il comando <kbd>SHIFT</kbd> + <kbd>:options</kbd>, che presenta una struttura ad albero delle opzioni indicizzate per categoria.

![Opzioni Nvim](../images/nvim_options.png)

In questo modo, attraverso la guida integrata, è possibile imparare i comandi mentre si utilizza l'editor e approfondire le opzioni disponibili.

## NvimTree

Per lavorare con i nostri file abbiamo bisogno di un File Explorer, fornito dal plugin _kyazdani42/nvim-tree.lua_. Con la combinazione <kbd>CTRL</kbd> + <kbd>n</kbd> possiamo aprire NvimTree.

![NvimTree](../images/nvim_tree.png)

Una descrizione dettagliata dei comandi e delle funzioni di NvimTree si trova nella [pagina dedicata](nvimtree.md).

Dopo aver esplorato i componenti dell'interfaccia, possiamo passare all'uso di NvChad.
Loading