GNU/Linux >> Tutoriels Linux >  >> Linux

Comment apporter des modifications de paramètres spécifiques à un fichier dans Vim à l'aide de Modeline

Bien que les plugins sont sans aucun doute l'une des plus grandes forces de Vim, il existe plusieurs autres fonctionnalités qui en font l'un des éditeurs de texte/IDE les plus puissants et les plus riches en fonctionnalités disponibles pour les utilisateurs de Linux aujourd'hui. L'une de ces fonctionnalités est la possibilité de modifier des paramètres spécifiques à un fichier. Cette capacité est accessible à l'aide de la fonction Modeline de l'éditeur.

Dans cet article, nous expliquerons comment vous pouvez utiliser la fonctionnalité Modeline de Vim à l'aide d'exemples faciles à comprendre.

But before we start doing that, it's worth mentioning that all the examples, commands, and instructions mentioned in this tutorial have been tested on Ubuntu 16.04, and the Vim version we've used is 7.4.

Modèle VIM

Utilisation

Comme nous l'avons déjà mentionné, la fonctionnalité Modeline de Vim vous permet d'apporter 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 sont pas affectés par ce changement. Il s'agit d'un cas d'utilisation idéal où Modeline vous aide dans ce que vous voulez faire.

Donc, ce que vous pouvez faire, vous pouvez 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 susmentionné pour tester le cas d'utilisation sur votre machine Linux, les choses ne fonctionneront pas comme prévu. Si tel 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-y la ligne suivante :

set modeline

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

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

// vim: noai:ts=8:

Essayez maintenant d'entrer une tabulation et vous verrez que le nombre d'espaces qu'elle couvre sera de 8. 

Vous m'avez peut-être remarqué en disant 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 il en est ainsi, la raison en est que la fonctionnalité est conçue de cette façon. Les lignes suivantes (extraites de la documentation officielle de Vim) devraient rendre cela plus clair :

"La ligne de mode ne peut se trouver nulle part dans le fichier :elle doit se trouver dans les premières ou les dernières lignes. L'emplacement exact où vim recherche la ligne de mode est contrôlé par les modelines variable; voir : modèles d'aide . Par défaut, il est défini sur 5 lignes ."

Et voici ce que les :modèles d'aide commande (mentionnée dans les lignes ci-dessus) indique :

If 'modeline' is on 'modelines' gives the number of lines that is checked for set commands. If 'modeline' is off or 'modelines' is zero no lines are checked.

Essayez de placer la commande modeline au-delà de la plage par défaut de 5 lignes (soit à partir du bas, soit à partir du haut), et vous remarquerez que les espaces de tabulation reviendront à la valeur par défaut de Vim - dans mon cas, il s'agit de 4 espaces.

Cependant, vous pouvez modifier 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 les 10 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 actuels liés à la ligne de modèle 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 le résultat suivant :

 modeline
Last set from ~/.vimrc
modelines=10
Last set from ~/.vimrc

Voici quelques-uns des points importants que vous devez savoir sur la fonctionnalité Modeline de Vim :

  • Cette fonctionnalité est activée par défaut pour Vim exécuté en mode nocompatible (non compatible Vi), mais certaines distributions notables de Vim désactivent cette option dans le système vimrc pour des raisons de sécurité.
  • La fonctionnalité est désactivée par défaut lors de la modification en tant qu'utilisateur root (si vous avez ouvert le fichier à l'aide de "sudo", il n'y a pas de problème :la fonctionnalité fonctionne).
  • Avec 'set' , la ligne de mode se termine au premier deux-points ne suivant pas de barre oblique inverse. Et sans 'set' , aucun texte ne peut suivre les options. Par exemple, /* vim :noai:ts=4:sw=4 */ est une ligne de modèle invalide.

Problèmes de sécurité

Malheureusement, la fonctionnalité Modeline de Vim peut être utilisée pour compromettre la sécurité. En fait, plusieurs problèmes liés à la sécurité de Modeline ont été signalés dans le passé, notamment l'injection de commandes shell, l'exécution de commandes arbitraires, l'accès non autorisé, etc. D'accord, la plupart d'entre eux sont anciens et auraient déjà été corrigés, mais cela donne une idée que la fonctionnalité Modeline pourrait être utilisée à mauvais escient par des pirates.

Conclusion

Modeline est peut-être une fonctionnalité avancée de l'éditeur Vim, mais ce n'est pas très difficile à comprendre. Il ne fait aucun doute qu'un peu de courbe d'apprentissage est impliquée, mais ce n'est pas grand-chose à demander étant donné l'utilité de la fonctionnalité. Bien sûr, il existe des problèmes de sécurité, ce qui signifie que vous devez peser vos options avant d'activer et d'utiliser la fonctionnalité.

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


Linux
  1. Comment faire fonctionner Ldapsearch sur Sles sur Tls à l'aide d'un certificat ?

  2. Faites de Vim votre IDE Perl à l'aide du plugin perl-support.vim

  3. Faites de Vim votre Bash-IDE à l'aide du plugin bash-support

  4. Tutoriel :Faites de Vim votre IDE C/C++ à l'aide du plugin c.vim

  5. Comment ouvrir un fichier dans vim en utilisant pipe

Comment protéger par mot de passe des fichiers texte à l'aide de l'éditeur Vim sous Linux

Comment protéger par mot de passe un fichier à l'aide de Vim sous Linux

Comment enregistrer un fichier dans Vi / Vim et quitter l'éditeur

Comment commenter plusieurs lignes à la fois dans l'éditeur vim en utilisant 3 méthodes

Comment annuler ou rétablir des modifications dans Vim

Comment protéger les fichiers par mot de passe à l'aide de l'éditeur Vim dans Ubuntu