Trasformare Neovim in un IDE avanzato¶
Pre-requisiti¶
Come specificato sul sito di NvChad, è necessario assicurarsi che il sistema soddisfi i seguenti requisiti:
- Neovim 0.8.3.
- Nerd Font Impostato nel tuo emulatore di terminale.
- Assicurati che il carattere nerd che hai impostato non finisca con Mono
- Esempio: Carattere Iosevka Nerd e non ~~Iosevka Nerd Font Mono~~
- Ripgrep è necessario per la ricerca con grep in Telescope (OPZIONALEL).
- GCC
In realtà non si tratta di una vera e propria "installazione", ma piuttosto di scrivere una configurazione personalizzata di Neovim per il nostro utente.
Esecuzione di un'Installazione Pulita
Come specificato nei requisiti, l'installazione di questa nuova configurazione su una precedente può creare problemi irrisolvibili. Si raccomanda un'installazione pulita.
Operazioni Preliminari¶
Se avete già utilizzato l'installazione di Neovim, questa avrà creato tre cartelle in cui scrivere i vostri file, che sono:
~/.config/nvim
~/.local/share/nvim
~/.cache/nvim
Per eseguire un'installazione pulita della configurazione, è necessario eseguire prima un backup di quella precedente:
mkdir ~/backup_nvim
cp -r ~/.config/nvim ~/backup_nvim
cp -r ~/.local/share/nvim ~/backup_nvim
cp -r ~/.cache/nvim ~/backup_nvim
E poi cancellare tutte le configurazioni e i file precedenti:
rm -rf ~/.config/nvim
rm -rf ~/.local/share/nvim
rm -rf ~/.cache/nvim
Ora che abbiamo fatto pulizia, possiamo passare all'installazione di NvChad.
A tale scopo, è sufficiente eseguire il seguente comando da qualsiasi posizione all'interno della propria home directory:
git clone https://github.com/NvChad/NvChad ~/.config/nvim --depth 1 && nvim
La prima parte del comando clona il repository NvChad nella cartella ~/.config/nvim
; questo è il percorso predefinito di Neovim per la ricerca della configurazione utente. L'opzione --depth 1
istruisce git di clonare solo il repository impostato come "default" su GitHub.
Una volta terminato il processo di clonazione nella seconda parte del comando, viene richiamato l'eseguibile Neovim (nvim), che dopo aver trovato una cartella di configurazione inizierà a importare le configurazioni incontrate nei file init.lua
di tale cartella in un ordine predefinito.
Prima di avviare il bootstrap, l'installazione ci proporrà l'installazione di una struttura di base (template chadrc) per le nostre ulteriori personalizzazioni:
Do you want to install chadrc template? (y/N):
Sebbene la scelta di installare la struttura raccomandata non sia obbligatoria, è sicuramente consigliata per chiunque sia alla prima esperienza con questo editor. Gli utenti attuali di NvChad che hanno già una cartella custom
saranno in grado di continuare ad utilizzarla dopo aver apportato le modifiche necessarie.
La struttura creata dal modello sarà utilizzata anche in questa guida per sviluppare la configurazione da utilizzare per scrivere documenti in Markdown.
Per coloro che vogliono saperne di più su questo argomento prima di iniziare l'installazione, possono consultare la pagina dedicata Template Chadrc.
La pagina contiene informazioni sulla struttura della cartella che verrà creata, le funzioni dei file correlati, e altre informazioni utili per personalizzare NvChad.
A questo punto inizierà il download e la configurazione dei plugin di base e, se abbiamo scelto d'installare anche il template, l'installazione dei server linguistici configurati. Una volta completato il processo, il nostro Editor sarà pronto all'uso.
Come si può vedere dalla schermata sottostante, grazie alle modifiche apportate alla configurazione, l'editor ha cambiato completamente aspetto rispetto alla versione base di Neovim. Va ricordato, tuttavia, che anche se la configurazione di NvChad trasforma completamente l'editor, la base rimane Neovim.
Struttura della configurazione¶
Passiamo ora ad analizzare la struttura che la configurazione ha creato, la struttura è la seguente:
.config/nvim
├── init.lua
├── lazy-lock.json
├── LICENSE
└── lua
├── core
│ ├── bootstrap.lua
│ ├── default_config.lua
│ ├── init.lua
│ ├── mappings.lua
│ └── utils.lua
└── plugins
├── configs
│ ├── cmp.lua
│ ├── lazy_nvim.lua
│ ├── lspconfig.lua
│ ├── mason.lua
│ ├── nvimtree.lua
│ ├── others.lua
│ ├── telescope.lua
│ ├── treesitter.lua
│ └── whichkey.lua
└── init.lua
Se si sceglie di installare anche il template chadrc, si avrà anche la cartella nvim/lua/custom
con la seguente struttura:
.config/nvim/lua/custom/
├── chadrc.lua
├── configs
│ ├── lspconfig.lua
│ ├── null-ls.lua
│ └── overrides.lua
├── highlights.lua
├── init.lua
├── mappings.lua
└── plugins.lua
Il primo file che incontriamo è il file init.lua
, che inizializza la configurazione inserendo la cartella lua/core
e i file lua/core/utils.lua
(e, se presente, lua/custom/init.lua
) nell'albero di nvim. Esegue il bootstrap di lazy.nvim
(il plugin manager) e una volta finito inizializza la cartella plugins
.
In particolare, la funzione load_mappings()
è chiamata per caricare le scorciatoie da tastiera. Inoltre, la funzione gen_chadrc_template()
fornisce la subroutine per creare la cartella custom
.
require "core"
local custom_init_path = vim.api.nvim_get_runtime_file("lua/custom/init.lua", false)[1]
if custom_init_path then
dofile(custom_init_path)
end
require("core.utils").load_mappings()
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
vim.opt.rtp:prepend(lazypath)
require "plugins"
dofile(vim.g.base46_cache .. "defaults")
L'inclusione della cartella core
comporta anche l'inclusione del file core/init.lua
, che sovrascrive alcune configurazioni dell'interfaccia di Neovim prepara la gestione del buffer.
Come si può vedere, ogni file init.lua
viene incluso seguendo un ordine ben stabilito. Questo è usato per sovrascrivere selettivamente le varie opzioni delle impostazioni di base. In generale, possiamo dire che i file init.lua
hanno le funzioni per caricare opzioni globali, autocmds o qualsiasi altra cosa.
Questa è la chiamata che restituisce le mappature dei comandi di base:
require("core.utils").load_mappings()
Questo sistema prevede quattro tasti principali dai quali, in associazione con altri tasti, è possibile lanciare i comandi. Le chiavi principali sono:
- C = CTRL
- leader = SPAZIO
- A = ALT
- S = MAIUSC
Nota
Nel corso di questi documenti si farà più volte riferimento a queste mappature di chiavi.
La mappatura predefinita è contenuta in core/mapping.lua, ma può essere estesa con altri comandi personalizzati usando il proprio mappings.lua.
Alcuni esempi della mappatura standard sono:
<space>th per cambiare il tema
<CTRL-n> per aprire nvimtree
<ALT-i> per aprire un terminale in una scheda fluttuante
Ci sono molte combinazioni preimpostate che coprono tutti gli usi di NvChad. Vale la pena soffermarsi ad analizzare le mappature delle chiavi prima di iniziare a usare l'istanza di Neovim configurata con NvChad.
Proseguendo con l'analisi strutturale, troviamo la cartella lua/plugins, che contiene l'impostazione dei plugin integrati e le loro configurazioni. I plugin principali della configurazione saranno descritti nella sezione successiva. Come si può vedere, la cartella core/plugins contiene anche un file init.lua
, che viene utilizzato per l'installazione e la successiva compilazione dei plugin.
Infine, troviamo il file lazy-lock.json
. Questo file ci permette di sincronizzare la configurazione dei plugin NvChad su più workstation, in modo da avere le stesse funzionalità su tutte le postazioni di lavoro utilizzate. La sua funzione è illustrata meglio nella sezione dedicata al gestore dei plugin.
Author: Franco Colussi
Contributors: Steven Spencer, Ganna Zhyrnova