Configurer Neovim grâce à Lua
Dans cet article, nous verrons comment configurer Neovim grâce au langage Lua.
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 est 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 .vimPour configurer Neovim 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 options 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")
-- Options
local opt = vim.opt
vim.schedule(function()
opt.clipboard = 'unnamedplus'
end)
-- Colorscheme
vim.cmd[[colorscheme tokyonight]]
vim.g.netrw_winsize = 18
opt.splitright = true
opt.colorcolumn = '72'
opt.smartcase = true
opt.ignorecase = true
opt.swapfile = false
opt.tabstop = 2
opt.shiftwidth = 2
opt.expandtab = true
opt.softtabstop = 2
opt.autoindent = true
opt.number = true
opt.relativenumber = false
opt.termguicolors = true
opt.cursorline = true
opt.signcolumn = "yes"
-- 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 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 :
-- Bootstrap lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not (vim.uv or vim.loop).fs_stat(lazypath) then
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
if vim.v.shell_error ~= 0 then
vim.api.nvim_echo({
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
{ out, "WarningMsg" },
{ "\nPress any key to exit..." },
}, true, {})
vim.fn.getchar()
os.exit(1)
end
end
vim.opt.rtp:prepend(lazypath)
-- Définir mapleader et maplocalleader avant de charger lazy.nvim
vim.g.mapleader = " "
vim.g.maplocalleader = "\\"
-- Initialisation de lazy.nvim
require("lazy").setup({
spec = {
{ import = "plugins" },
},
install = { colorscheme = { "habamax" } },
checker = { enabled = true },
})
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
opts = {},
},
{
"folke/tokyonight.nvim",
lazy = false,
priority = 1000,
opts = {},
},
}
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.