Commandes et raccourcis clavier
Ajoutez des actions destinées aux utilisateurs.
Commandes et raccourcis clavier est une leçon Lua Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Lua Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Lua Academy comprend 4 leçons au total.
Vue d’ensemble des commandes utilisateur
Les commandes utilisateur sont des commandes accessibles avec deux-points que votre extension expose, comme :Format ou :Telescope. Elles doivent commencer par une lettre majuscule.
nvim_create_user_command les définit en Lua en recevant un nom, une fonction de rappel ou une chaîne, ainsi qu’une table d’options. Cela remplace :command de Vimscript.
vim.api.nvim_create_user_command('Hello', function()
print('Hello from my plugin')
end, {})Arguments des commandes
Définissez nargs pour accepter des arguments : '0', '1', '*', '?' ou '+'. La fonction de rappel reçoit une table opts contenant args, fargs et bang.
fargs est la liste d’arguments déjà séparée selon les espaces, ce qui correspond généralement à ce dont vous avez besoin.
vim.api.nvim_create_user_command('Greet', function(opts)
print('Hi ' .. opts.args)
end, { nargs = 1 })Commandes avec plage et point d’exclamation
Transmettez range = true pour accepter des plages de lignes ; la fonction de rappel lit alors opts.line1 et opts.line2. Ajoutez bang = true pour autoriser :Cmd!, détecté via opts.bang.
Ces indicateurs permettent à une même commande de se comporter différemment pour les sélections visuelles ou les variantes forcées.
vim.api.nvim_create_user_command('Sum', function(o)
print(o.line1 .. ' to ' .. o.line2)
end, { range = true })Complétion des commandes
Fournissez la complétion par tabulation avec l’option complete. Utilisez des options intégrées comme 'file' ou 'buffer', ou une fonction Lua personnalisée.
Une fonction de complétion personnalisée reçoit l’argument partiel et la ligne de commande, puis renvoie une liste de chaînes candidates.
vim.api.nvim_create_user_command('Pick', function(o) print(o.args) end, {
nargs = 1,
complete = function() return { 'red', 'green', 'blue' } end,
})Commandes propres au tampon
Pour limiter une commande à un seul tampon, utilisez nvim_buf_create_user_command avec l’identifiant du tampon. C’est courant dans les extensions associées à un type de fichier.
Par exemple, une extension Markdown peut définir :Preview uniquement dans les tampons Markdown, afin de préserver la propreté de l’espace de noms global.
vim.api.nvim_buf_create_user_command(0, 'Preview', function()
print('previewing this buffer')
end, {})Présentation de vim.keymap.set
vim.keymap.set est l’API moderne de mappage. Elle reçoit un mode, les touches de gauche, une chaîne ou une fonction Lua de droite, ainsi qu’une table d’options.
Contrairement à l’ancien nvim_set_keymap, elle accepte directement une fonction de rappel Lua à droite, sans qu’il soit nécessaire d’utiliser l’encapsulation <cmd>lua.
vim.keymap.set('n', '<leader>w', function()
vim.cmd('write')
end, { desc = 'Save file' })Modes et mappages multiples
L’argument de mode peut être une chaîne unique comme 'n' ou une table telle que { 'n', 'v' } pour mapper plusieurs modes à la fois.
Modes courants : n normal, i insertion, v visuel, x visuel uniquement, t terminal. Une chaîne vide '' signifie les modes normal, visuel et attente d’opérateur.
vim.keymap.set({ 'n', 'v' }, '<leader>y', '"+y', { desc = 'Yank to clipboard' })Options de mappage
La table opts contrôle le comportement. silent = true masque l’écho de la commande, noremap vaut true par défaut pour plus de sécurité, et buffer = 0 limite le mappage au tampon actuel.
Ajoutez toujours un desc afin que la sortie de which-key et de :map reste lisible.
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {
buffer = 0, silent = true, desc = 'Go to definition',
})Mappages d’expression
Avec expr = true, la fonction de droite renvoie les touches à transmettre. Cela permet de créer des mappages intelligents, par exemple pour faire en sorte que <Tab> se comporte différemment lorsqu’un menu de complétion est visible.
Renvoyez une chaîne vide pour ne rien faire, ou les touches littérales à insérer.
vim.keymap.set('i', '<Tab>', function()
return vim.fn.pumvisible() == 1 and '<C-n>' or '<Tab>'
end, { expr = true })Suppression des mappages
Supprimez un mappage avec vim.keymap.del en transmettant le même mode et les mêmes touches, ainsi qu’un champ buffer s’il était propre au tampon.
C’est utile dans les routines de nettoyage ou lorsqu’une extension désactive une fonctionnalité et doit rétablir les liaisons d’origine de l’utilisateur.
vim.keymap.del('n', '<leader>w')
vim.keymap.del('n', 'gd', { buffer = 0 })Associer commandes et mappages
Une approche claire consiste à définir la logique une seule fois, à l’exposer sous forme de commande utilisateur et à associer une touche qui appelle cette commande. Vous conservez ainsi une source unique de vérité.
Associer une touche à <cmd>Hello<cr> évite de quitter le mode visuel et est plus prévisible que :Hello<cr>.
vim.api.nvim_create_user_command('Toggle', function() end, {})
vim.keymap.set('n', '<leader>t', '<cmd>Toggle<cr>', { desc = 'Toggle' })Vérification rapide
Vérifiez votre maîtrise des commandes et des mappages.
Récapitulatif : commandes et mappages
Vous pouvez maintenant créer des commandes avec nvim_create_user_command, les contrôler avec nargs, range, bang et complete, et les limiter à un tampon.
Pour les mappages, vim.keymap.set accepte les fonctions de rappel Lua, plusieurs modes et des options comme desc, silent, buffer et expr, tandis que vim.keymap.del permet le nettoyage.
Questions Fréquemment Posées
La leçon « Commandes et raccourcis clavier » est-elle gratuite ?
Oui — le texte complet de « Commandes et raccourcis clavier » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Lua Academy, passe à CoddyKit PRO. Le cours Lua Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Commandes et raccourcis clavier » ?
Ajoutez des actions destinées aux utilisateurs. Tu pratiques Lua Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Lua Academy ?
Aucune expérience préalable n'est requise. Lua Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Commandes et raccourcis clavier » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Lua Academy ?
Oui. Chaque leçon Lua Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- L’API Lua de Neovim
- Commandes et raccourcis clavier
- Tampons et fenêtres
- Empaqueter une extension