Vincent Barrault

Gérer des plugins pour sa config nvim avec Packer

Gérer des plugins pour sa config nvim avec Packer

Table des matières

Introduction

Commencer une configuration nvim, peut devenir un vrai parcour du combatant, surtout quand on est néophyte.

Si on ne veut pas se décourager au bout de deux heures, il vaut mieux commencer par utiliser des choses qui sont déjà toute prêtes.

Les plugins, c'est l'occasion d'améliorer grandement l'expérience nvim, sans trop d'efforts de configuration.

Installer Packer

La première chose à faire pour installer des plugins est d'installer un gestionnaire de plugins.

Mon gestionnaire de prédilection est Packer, que l'on peut trouver sur son repository ici.

Pour l'installer, je peux directement le cloner avec git:

git clone --depth 1 https://github.com/wbthomason/packer.nvim\
  ~/.local/share/nvim/site/pack/packer/start/packer.nvim

Ou je peux rajouter un fichier ~/.config/nvim/lua/plugins.lua dans ma configuration et commencer directement à l'utiliser.

local ensure_packer = function()
  local fn = vim.fn
  local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
  if fn.empty(fn.glob(install_path)) > 0 then
    fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
    vim.cmd [[packadd packer.nvim]]
    return true
  end
  return false
end

local packer_bootstrap = ensure_packer()

return require('packer').startup(function(use)
  use 'wbthomason/packer.nvim'
  -- add your plugins here...
  if packer_bootstrap then
    require('packer').sync()
  end
end)

Une fois ce fichier sauvegardé, je relance nvim pour prendre en compte les modifications et installer Packer, puis je lance la commande suivante pour installer les nouveaux plugins si besoin:

:PackerSync

Et voilà !

Configuration supplémentaire

Je peux rajouter ce bout de code pour executer un PackerCompile à chaque modification du fichier plugins.lua:

vim.cmd([[
  augroup packer_user_config
    autocmd!
    autocmd BufWritePost plugins.lua source <afile> | PackerCompile
  augroup end
]])

A chaque fois que je vais modifier ce fichier, il se chargera de synchroniser mes plugins automatiquement sans que j'ai à faire un :PackerSync.

Rajouter des plugins

Pour rajouter des plugins, rien de plus simple, il suffit de rajouter

use "my/plugin"

directement dans la fonction startup de packer, et le tour est joué.

Certain plugins demandent une configuration supplémentaire, il faut se référer à la documentation de chaque plugins pour les installer proprements.

Pour executer quelque chose après le chargement d'un plugin, je peux rajouter l'option config dans le use de ce dernier:

use {
  "my/plugin",
  config = function()
    -- configure your plugin here...
  end,
}

C'est utile pour toute configuration d'un plugin après son initialisation.

Mais on peut aussi ajouter la configuration d'un plugin dans un fichier dédié. Par example, je vais créer le fichier ~/.config/nvim/lua/plugins/myplugin.lua et y rajouter le code suivant:

local status_ok, myplugin = pcall(require, "my-plugin")
if not status_ok then
  return
end

myplugin.setup({
  option = "toto",
})

La fonction pcall me sert à inclure de manière sécurisé le plugin sans faire planter toute la configuration.

Ce qui évite les erreurs si le plugin n'est pas encore installé via le :PackerSync.

Je ne dois pas oublier d'inclure le fichier depuis le init.lua comme ceci:

require "plugins.myplugin";

Conclusion

Pour bien commencer une configuration nvim, sans me décourager dès le début, je préfère trouver et installer des plugins qui améliorent l'expérience nvim.

Le repository https://github.com/rockerBOO/awesome-neovim référence même les plugins les plus populaires.

Par la suite, je vais améliorer ma configuration, et qui sait, peut être qu'un jour, je n'aurai plus besoin d'autent de plugins?