Keymap
The configuration is inspired by this blog : https://vincent.jousse.org/blog/fr/tech/configurer-neovim-comme-ide-a-partir-de-zero-tutoriel-guide/
Ajout raccourcis
lua/core/keymaps.lua contient la confiration de keymaps.
La fonction permet de spécifier le raccourcis. En quatrièmme argument, il prends une clé-valeur qui permet d’ajouter une description au raccourcis.
keympa([mode], [nouvelle touches], [Ancienne Touche], { desc = "description" })
Commandes de base
;;: sortir du mode edition [I]i: [v] déplace le texte sélectionné vers le haut en mode visuelk: [v] déplace le texte sélectionné vers le bas en mode visuelI: [V] déplace le texte sélectionné vers le haut en mode visuel blocK: [V] déplace le texte sélectionné vers le bas en mode visuel blocyy: (N) copie la ligne entièreyyp: (N) copie et colle en dessousp: (N) coller en dessousP: (N) coller au dessus
Plugins
Ajout de plugin
Pour chaque nouveau plugin, on créer un nouveau fichier dans lua/plugins/[plugin_name].lua. Lazy se charge de télécharger le plugin, et de le charger dans la configuration Nvim.
:Lazy: lance la fenetre de gestion des pluginsq: quitter la fenetre de gestionU: update des plugins
Plugins installés
lazy.nvim
Il permet de gérer l’installation et la configuration des différents plugins. Pour chaque nouveau plugin, on vient créer un nouveau fichier qui permet de set une configuration.
Pour ouvrir la fenêtre de gestion des plugins, on peut utiliser :Lazy, et q pour quitter.L’utilisation de U permet de mettre à jour automatiquement tous les plugins.
La config se trouve dans lua/config/lazy.lua.
Theme
Dans le fichier, utiliser la config fournis dans le Github, en se basant sur cet exemple
return {
"[repo_name]",
lazy = false,
priority = 1000,
opts = {},
config = function()
-- chargement du thème
require('[theme_name]').load()
end,
}nvim-tree.lua
Ajoute l’explorateur de fichier.
<leader>e: ouvre l’explorateur. Définis dans le fichier de config du puginsa: Permet de créer un nouveau fichier, ou dossier ->/file.txt|/file/d: Supprimer un fichierr: Renommerx: Couperc: Copierp: CollerR: RafraichirH: Afficher/masquer les fichiers cachés
Les raccourcis suivant sont définis dans le fichier lua/core/keymaps.lua:
<C-h>: déplace le curseur dans la fenetre de gauche<C-j>: déplace le curseur dans la fenetre du bas<C-k>: déplace le curseur dans la fenetre du haut<C-l>: déplace le curseur dans la fenetre de droite
telescope.lua
Recherche par mot. Le fichier lua/plugins/telescope.lua permet de définir la configuration.
Keymap default
<Ctrl-k>: remonte dans la liste de sélection<Ctrl-j>: descend dans la liste de sélection<leader>ff: recherche de string dans les noms de fichier<leader>fg: recherche de string dans le contenu du fichier<leader>fb: recherche de string dans les noms de buffers<leader>fx: recherche de string sous le curseur
bufferline.lua
Permet d’avoir un aperçu des buffers en cours (lua/plugins/bufferline.lua).
Raccourcis définis dans lua/core/keymaps:
<S-l>: [n] passer au buffer suivant<S-h>: [n] passer au buffer précédent
Lualine - lua/plugins/lualine.lua
Ajoute la barre de status. Documentation
Treesitter - lua/plugins/treesitter.lua
Permet de parser et comprendre la syntaxe des langages. Apporte la coloration syntaxique, indentation intelligente, tags automatique, et contexte.
Language supportés a ajouter dans le ensure_installed de la configuration.
Nvim-cmp - lua/plugins/nvim-cmp.lua
Ajout de l’autocomplétion. Il fournit l’interface et doit ensuite etre configuré avec les lsp, snippets, etc. Il est possible d’ajouter des sources possible
<C-k>: suggestion précédente<C-j>: suggestion suivamte<C-b>: défile la documentation vers le haut<C-f>: défile la documentation vers le bas<C-space>: ouvre manuellement le menu d’autocompletion<C-e>: ferme le menu d’autocompletionEnter: valide une suggestion
Support des LSP
Les LSP sont des protocoles qui permettent à Neovim de connaître le language de programme sur lequel on travail. C’est via les LSP que l’on peut ajouter de l’auto-complète ou le go to definition. Ces protocoles ne sont pas spécifique à Neovim, mais sont utiliser par les IDE.
lspconfig - lua/plugins/lsp/lspconfig.lua
Permet de configurer de manière unifié les différents LSP.
gd: [n] accéder à la définition -> où c’est définigD: [n] accéder à la déclarationgR: [n] affiche tous les endroits où l’élément est utilisé -> où c’est utiliségi: [n] accéde au éléments qui implément (ex une interface Go) -> qui implémentegt: [n] accède au type type définition d’un type Go par exempleK: [n] affiche la documentationgs: [n] affiche la signature d’une fonction<leader>rn: [n] renommage<leader>ca: [n] code action<leader>d: [n] affiche les erreurs de la ligne courante<leader-D: [n] affiches les erreurs du fichier[d: [n] diagnostics précédent]d: [n] diagnostics suivant<leader>F: [n] formate le fichier<leader>rs: [n] relance le serveur LSP
Mason - lua/plugins/lsp/mason.lua
Installe les LSP. ensure_installed permet d’ajouter des nouveaux language. Il seront automatiquement téléchargement est les indiquant dans cette liste.
Liste des language
:LspInfo: affiche la liste des LSP
Trouble - lua/plugins/trouble.lua
Remonte les erreurs remonté par le LSP: permet de voir les définitions de fonction du fichier, etc
<leader>xx: [n] ouvre/ferme la liste des diagnostics du projet<leader>xX: [n] ouvre/ferme la liste pour le fichier courant<leader>cs: [n] affiche les symboles du fichier, le outline de VSCODE<leader>cl: [n] affiche les informations LSP liées à l’élément sous le curseur (endroit de la défintion, où est utilisé, ..)<leader>xL: [n] affiche la location list<leader>xQ: [n] affiche la Quickfix List
Conform - lua/plugins/conform.lua
Ajoute le formatage automatique à la sauvegarde. Les LSP sont à préciser.
<leader>mp: [v] formate le fichier
Gitsigns - lua/plugins/gitsigns.lua
Affiche les status de suivis Git. Les blocs sont définie dans des hunk.
]h: [n] hunk suivant[h: [n] hunk précédent<leader>hs: ajoute le hunk courant au stage<leader>hr: annule le hunk courant<leader>hR: annule les modification du fichier<leader>hu: annule<leader>hs<leader>hp: affiche un mini dif<leader>hb: git blame pour la ligne courante<leader>hB: git blamce afficher en permanent<leader>hd: git diff du fichier courant<leader>hD: compare avec le commit précédentih: text object
whichKey - lua/plugins/whichkey.lua
Permet de voir les informations sur les commandes
<leader>?: affiche la liste des raccourcis possible dans le contexte actuel.
Todo
Permet de mettre en valeur les TODO. On peut utiliser ces commentaires:
TODO: a faireFIXFIXME: a corrigerBUG: bug connuHACK: solution temporaireWARNWARNINGNOTE: informationPERF: optimisationTEST: test a ajouter]t: commentaire TODO suivant[t: commentaire TODO précédent
Indent-blankline - lua/plugins/indent-blankline.lua
Ajout des guides d’indentation
Autopairs - lua/plugins/autopairs.lua
Pairing auto des parenthèses
Rainbow delimiters - lua/plugins/rainbow-delimiters.lua
Ajout de parenthèse de couleurs
Noice - lua/plugins/noice.lua
Modification de l’interface des erreurs et des notifications par défaut et les passe en haut à droite. Modifier l’interface de recherche ou les cmdline en affichant une popup
Render Markdown - lua/plugins/render-markdown.lua
Permet d’avoir un affichage propre du markdown.