Vim Modeline · 5 min read · Nov 14, 2025

Comment effectuer des modifications de paramètres spécifiques à un fichier dans Vim en utilisant Modeline

Bien que les plugins soient sans aucun doute l’un des plus grands atouts de Vim, plusieurs autres fonctionnalités en font l’un des éditeurs de texte/IDE les plus puissants et riches en fonctionnalités disponibles pour les utilisateurs de Linux aujourd’hui. L’une de ces fonctionnalités est la capacité de faire des modifications de paramètres spécifiques à un fichier. Cette capacité peut être accessible en utilisant la fonctionnalité Modeline de l’éditeur.

Dans cet article, nous allons discuter de la façon dont vous pouvez utiliser la fonctionnalité Modeline de Vim à l’aide d’exemples faciles à comprendre.

Mais avant de commencer, il convient de mentionner que tous les exemples, commandes et instructions mentionnés dans ce tutoriel ont été testés sur Ubuntu 16.04 - Ubuntu 22.04.

VIM Modeline

Utilisation

Comme nous l’avons déjà mentionné, la fonctionnalité Modeline de Vim vous permet de faire des modifications spécifiques à un fichier. Par exemple, supposons que vous souhaitiez remplacer tous les onglets utilisés dans un fichier particulier de votre projet par des espaces, et vous assurer que tous les autres fichiers ne soient pas affectés par ce changement. C’est un cas d’utilisation idéal où Modeline vous aide dans ce que vous voulez faire.

Donc, ce que vous pouvez faire, c’est mettre la ligne suivante au début ou à la fin du fichier en question :

# vim: set expandtab:

Il y a de fortes chances que si vous essayez de faire l’exercice mentionné ci-dessus pour tester le cas d’utilisation sur votre machine Linux, les choses ne fonctionneront pas comme prévu. Si c’est le cas, ne vous inquiétez pas, car la fonctionnalité Modeline doit d’abord être activée dans certains cas (elle est désactivée par défaut sur des systèmes tels que Debian, Ubuntu, Gentoo et OSX pour des raisons de sécurité).

Pour activer la fonctionnalité, ouvrez le fichier .vimrc (situé dans votre répertoire personnel), puis ajoutez la ligne suivante :

set modeline

Maintenant, chaque fois que vous entrez un onglet et enregistrez le fichier (où la commande expandtab de modeline a été entrée), l’onglet sera automatiquement converti en espaces blancs.

Considérons un autre cas d’utilisation. Supposons que l’espace d’onglet par défaut dans Vim soit réglé sur 4, mais pour un fichier particulier, vous souhaitez l’augmenter à 8. Pour cela, vous devez ajouter la ligne suivante au début ou à la fin du fichier :

// vim: noai:ts=8:

Maintenant, essayez d’entrer un onglet et vous verrez que le nombre d’espaces qu’il couvre sera de 8.

Vous avez peut-être remarqué que je disais que ces commandes de modeline doivent être entrées quelque part près du haut ou du bas du fichier. Si vous vous demandez pourquoi c’est ainsi, la raison est que la fonctionnalité est conçue de cette manière. Les lignes suivantes (tirées de la documentation officielle de Vim) devraient rendre cela plus clair :

Le modeline ne peut pas être n’importe où dans le fichier : il doit être dans les premières ou dernières lignes. L’emplacement exact où vim vérifie le modeline est contrôlé par la variable modelines ; voir :help modelines . Par défaut, il est réglé sur 5 lignes.”

Et voici ce que la commande :help modelines (référencée dans les lignes ci-dessus) dit :

Si 'modeline' est activé, 'modelines' donne le nombre de lignes qui sont vérifiées pour les commandes set. Si 'modeline' est désactivé ou si 'modelines' est zéro, aucune ligne n'est vérifiée.

Essayez de mettre la commande modeline au-delà des 5 lignes par défaut (soit à partir du bas, soit à partir du haut), et vous remarquerez que les espaces d’onglet reviendront à la valeur par défaut de Vim - dans mon cas, c’est 4 espaces.

Cependant, vous pouvez changer ce comportement si vous le souhaitez, en utilisant la commande suivante dans votre fichier .vimrc.

set modelines=[new-value]

Par exemple, j’ai augmenté la valeur de 5 à 10.

set modelines=10

Cela signifie que maintenant je peux mettre la commande modeline n’importe où entre les 10 premières ou dernières lignes du fichier.

En continuant, à tout moment, lors de l’édition d’un fichier, vous pouvez entrer ce qui suit (avec l’éditeur Vim en mode commande) pour voir les paramètres liés au modeline actuels ainsi que l’endroit où ils ont été définis pour la dernière fois.

:verbose set modeline? modelines?

Par exemple, dans mon cas, la commande ci-dessus a produit la sortie suivante :

 modeline  
      Dernière définition depuis ~/.vimrc  
 modelines=10  
      Dernière définition depuis ~/.vimrc

Voici quelques points importants que vous devez connaître sur la fonctionnalité Modeline de Vim :

  • Cette fonctionnalité est activée par défaut pour Vim fonctionnant en mode nocompatible (non compatible Vi), mais certaines distributions notables de Vim désactivent cette option dans le vimrc système pour des raisons de sécurité.
  • La fonctionnalité est désactivée par défaut lors de l’édition en tant que root (si vous avez ouvert le fichier en utilisant ‘sudo’, alors il n’y a pas de problème - la fonctionnalité fonctionne).
  • Avec ‘ set', le modeline se termine au premier deux-points ne suivant pas un antislash. Et sans ‘ set', aucun texte ne peut suivre les options. Par exemple, / vim: noai:ts=4:sw=4 / est un modeline invalide.

Préoccupations de sécurité

Malheureusement, la fonctionnalité Modeline de Vim peut être utilisée pour compromettre la sécurité. En fait, plusieurs problèmes de sécurité liés au Modeline ont été signalés dans le passé, y compris l’injection de commandes shell, l’exécution de commandes arbitraires, l’accès non autorisé, et plus encore. D’accord, la plupart de ceux-ci sont anciens et auraient été corrigés maintenant, mais cela donne une idée que la fonctionnalité Modeline pourrait être mal utilisée par des hackers.

Conclusion

Le Modeline peut être une fonctionnalité avancée de l’éditeur Vim, mais il n’est pas très difficile à comprendre. Il ne fait aucun doute qu’il y a une petite courbe d’apprentissage impliquée, mais ce n’est pas beaucoup demander étant donné à quel point la fonctionnalité est utile. Bien sûr, il y a des préoccupations de sécurité, ce qui signifie que vous devriez peser vos options avant d’activer et d’utiliser la fonctionnalité.

Avez-vous déjà utilisé la fonctionnalité Modeline ? Comment était votre expérience ? Partagez avec nous (et toute la communauté HowtoForge) dans les commentaires ci-dessous.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.