Configurer Neovim grâce à Lua
Dans cet article, nous verrons comment configurer Neovim grâce au langage Lua.Nous verrons aussi comment avoir une config assez légère qui marche sur la plupart des ordis. Du pentium au i7/9 denière génération.
Si tu souhaites un IDE complet avec LSP (Language Server Protocol — qui gère la complétion de code, la coloration syntaxique et la détection d'erreurs) déjà configuré, le mieux est d'installer le plugin kickstart.nvim. Si tu préfères un éditeur plus léger, configurer à la carte, c'est par ici.
Compiler Neovim
Pour avoir accès au plugin manager Lazyvim,Il te faudra
une version >= 0.11.2. Si ta distribution ne possède par la
dernière version, tu devras compiler Neovim manuellement.
On va récupèrer la dernier version
git clone https://github.com/neovim/neovim.git
Et pour la compilation, ça se passe comme ça:
cd neovim
make CMAKE_BUILD_TYPE=Release
sudo make install
Tu auras différentes options de compilation:
- Release Cette option ne retourne aucune information pour le déboguage et permet d'avoir une meilleure optimisation.
- Debug: Debug permet d'avoir accès aux informations de déboguage, cette option sera utile en cas de déboguage avec GDB ou LLDB
- RelWithDebInfo: Offre un compromis entre debug et optimisation
Configuration de Neovim
Neovim accepte la configuration au format .vim et au format .lua. La configuration au format Lua est un peu plus documenté.
Nous allons voir la configuration au format .vim. Si tu as déja un fichier de configuration et que tu souhaites tester des modifs sur un nouveau fichier sans polluer ta config. Tu peux utiliser cette commande:nvim -u ton_fichier.vim
Voici mon init.vim
syntax on
let g:netrw_winsize=18
set colorcolumn=72
set smartcase
set ignorecase
set noswapfile
set nobackup
set autoindent
set number
set termguicolors
set cursorline
set signcolumn
set clipboard=unnamedplus
set encoding=utf-8
set tabstop=4
set softtabstop=4
set shiftwidth=4
set noexpandtab
On va détailler toutes les options
- netrw_winsize: Cette option permet de définir la largeur de l'explorateur de fichier.
- splitright: Permet d'ouvrir un nouveau fichier sur la droite de l'explorateur de fichier avec la touchev.
- splitbelow: Split la fenêtre en dessous de la fenêtre actuelle.
- colorcolumn Colore la colonne indiquée, sert comme guide visuel.
- smartcase et ignorecase: Cherche le texte en minuscule et en majuscule.
- noswapfile et nobackup: Désactive la création de fichier swap et de fichier backup.
- autoindent:
- number: Affiche les numéros de ligne
- termguicolors: Permet d'utiliser plus de 256 couleurs
- cursorline Colore la ligne courante.
- signcolumn: Permet d'afficher les icones(git,breakpoint...)
- clipboard: Permet d'echanger avec le presse-papier du système.
- encoding: Definit l'encodage pour l'UTF-8
- tabstop: Définit le nombre de collonnes pour une tabulation(\t)
- softtabstop:
- shiftwidth: Définit le nombre de collones pour l'indentation(<< / >>)
- noexpandtab: Cette option insert des espaces au lieu d'une tabulation quand on appuie sur la touche tab.
Définir les options de reformatage
Neovim définit pas mal d options pour reformater le texte ( commenter les lignes suivantes...)Tu trouveras pas mal de documentation grâce à la commande :help fo-table
- r inserera automatiquement un commentaire sur la ligne suivante si vous êtes entrain d'écrire un commentaire
- o comme l'option r< mais quand tu crées une nouvelle ligne
:set verbose=1 formatoptions?
Si tu souhaites avoir plus de détails sur les différentes options pour
configurer Neovim, tu peux te rendre sur le wiki
vimtricks.Tu auras accès à la doc
qui t'explique de façon assez simple toutes les options.
Pour configurer Neovim en lua manuellement, il va falloir créer les répertoires et les fichiers de cette façon :
nvim/
├── init.lua
├── lazy-lock.json
└── lua
├── config
│ └── lazy.lua
└── plugins.lua
Dans le fichier init.lua, situé à la racine du répertoire nvim, je définis les vim.oions dont j'ai besoin ainsi que les différents alias que j'utilise pour naviguer dans mes notes.
Voilà mon fichier nvim/init.lua :
-- Lazy plugins manager
require("config.lazy")
require("plugins")
vim.schedule(function()
vim.o.clipboard = 'unnamedplus'
end)
-- Colorscheme
vim.cmd[[colorscheme tokyonight]]
vim.o.netrw_winsize = 18
vim.o.splitright = true
vim.o.colorcolumn = '72'
vim.o.smartcase = true
vim.o.ignorecase = true
vim.o.swapfile = false
vim.o.tabstop = 2
vim.o.shiftwidth = 2
vim.o.expandtab = true
vim.o.softtabstop = 2
vim.o.autoindent = true
vim.o.number = true
vim.o.relativenumber = false
vim.o.termguicolors = true
vim.o.cursorline = true
vim.o.signcolumn = "number"
-- Alias
vim.api.nvim_create_user_command('Nt', 'tabedit /media/usb/NOTES/index.md', {})
vim.api.nvim_create_user_command('Sppy', 'tabedit /media/usb/SNIPS/python/README.md', {})
vim.api.nvim_create_user_command('Spc', 'tabedit /media/usb/SNIPS/C/README.md', {})
vim.api.nvim_create_user_command('Sprst', 'tabedit /media/usb/SNIPS/rust/README.md', {})
On va documenter ça:
vim.o sert surtout à définir les options de réglage
vim.g sert à définir les options options globales
On va maintenant installer lazy.nvim, qui va nous servir de
gestionnaire de plugins et permettra d'en installer de nouveaux
facilement.
Tu trouveras toutes les informations sur ce plugin à l'adresse
suivante :
lazy.folke.io/installation.
Il suffit de copier le contenu ci-dessous dans le fichier lua/config/lazy.lua :
J'ajoute ensuite tous mes plugins dans le fichier
lua/plugins.lua. Pour ma part, je n'utilise que
indent-blankline
et le thème
tokyonight.
Mon fichier plugins.lua ressemble à ça :
return {
{
"lukas-reineke/indent-blankline.nvim",
main = "ibl",
---@module "ibl"
---@type ibl.config
vim.os = {},
},
{
"folke/tokyonight.nvim",
lazy = false,
priority = 1000,
vim.os = {},
},
}
Et voilà ! Lorsque tu démarres Neovim, une fenêtre devrait s'afficher pour indiquer l'installation des plugins. Tu as maintenant une base propre et minimaliste, prête à être enrichie selon tes besoins.