Cela devrait fonctionner. J'ai essayé cette ligne moi-même et cela a fonctionné. Je pourrais être que votre option «modeline» a été définie sur «nomodeline». Essayez d'exécuter cela et voyez ce que vous obtenez.
:verbose set modeline?
Cela vous indiquera la valeur de l'option 'modeline' et sinon la valeur par défaut, où elle a été définie pour la dernière fois.
Certaines distributions Linux définissent 'nomodeline' dans / etc / vimrc ou / usr / share / vim / vimrc comme mesure de sécurité, même si les problèmes de sécurité avec 'modeline' sont résolus depuis longtemps.
@duckbrain Il est fondamentalement impossible de garantir que tous les problèmes de sécurité ont été résolus tant qu'il est toujours possible d'inclure des instructions intégrées à exécuter par le code qui examine les données dans les données elles-mêmes. C'est pourquoi la documentation du nvi de Keith Bostic a toujours dit modelinesque l'option n'est pas mise en œuvre et qu'elle ne le sera jamais. C'est comme tous les bogues de sécurité provenant de commandes intégrées à des fichiers ou d'instructions de macro à exécuter en PDF, Word, Excel, etc., etc.
J'étais VRAIMENT perplexe sur celui-ci car la documentation n'est pas entièrement vraie.
Il s'avère que dans la version 8 (et peut-être plus tôt), vous ne pouvez pas utiliser le mot setdans votre modélisation. La documentation décrit "le deuxième formulaire" comme étant /* vim: set ai tw=75: */mais cela ne fonctionne pas. Vous devez utiliser "le premier formulaire"// vim: ai tw=75
Remarque: vous pouvez utiliser l'un de ces types d'indicateurs de commentaire. Ou pas du tout.
Ce n'est pas nécessairement vrai pour toutes les installations vim. La forme avec setfonctionne bien pour moi sur vim 8.0 (mais pas sur 7.4). Il convient également de noter qu'avec le deuxième formulaire // vim: ai tw=75, il ne peut pas y avoir d'autres caractères à la fin de la ligne, ou vim se plaindra et ignorera la modeline.
Josh
Cela devrait être définitivement signalé comme un bug (ou comme des documentations obsolètes). J'ai reproduit sur VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 24 2016 16:44:48) Inklusive der Korrekturen: 1-1689 Extra-Patches: 8.0.0056 Verändert von [email protected] Übersetzt von [email protected] Riesige Version mit GTK2-GNOME GUI. (Les dernières lignes signifient modifié par ... , compilé par ... , version énorme ... ).
LittleByBlue
J'ai essayé de l'adresser sur la liste de diffusion. Ils n'étaient pas d'accord.
Bruno Bronosky
@BrunoBronosky avez-vous un lien vers le fil de discussion? Aimerait lire son raisonnement.
Cela n'a aucun effet si modelinen'est pas également défini (ce qui est par défaut dans Vim sauf si vous êtes root)
kynan
Gentoo a un système à l'échelle set nomodelineen /etc/vimrcraison de toutes les vulnérabilités avec la manipulation des modelines dans vim.
MattBianco
Dans mon cas, j'ai également dû définir modelinesune valeur non nulle. L'aide indique que la valeur par défaut est 5, c'est donc ce que je l'ai défini et cela a fait l'affaire pour moi. Le déclare que,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.
filetype=conf
Last set from /usr/local/Cellar/vim/8.0.1350/share/vim/vim80/filetype.vim
Il peut y avoir un effet secondaire quelque part dans ma conf, mais la syntaxe de modeline non compatible est la seule qui fonctionne comme prévu pour moi.
/usr/share/vim/vim80/debian.vimfrom vim-commonsur les distributions basées sur Debian désactive modelinepar défaut.
" modelines have historically been a source of security/resource
" vulnerabilities -- disable by default, even when 'nocompatible' is set
set nomodeline
Vous devez activer modelineexplicitement dans votre fichier .vimrcou ~/.vim/vimrc.
Réponses:
Cela devrait fonctionner. J'ai essayé cette ligne moi-même et cela a fonctionné. Je pourrais être que votre option «modeline» a été définie sur «nomodeline». Essayez d'exécuter cela et voyez ce que vous obtenez.
Cela vous indiquera la valeur de l'option 'modeline' et sinon la valeur par défaut, où elle a été définie pour la dernière fois.
Certaines distributions Linux définissent 'nomodeline' dans / etc / vimrc ou / usr / share / vim / vimrc comme mesure de sécurité, même si les problèmes de sécurité avec 'modeline' sont résolus depuis longtemps.
la source
modelines
que l'option n'est pas mise en œuvre et qu'elle ne le sera jamais. C'est comme tous les bogues de sécurité provenant de commandes intégrées à des fichiers ou d'instructions de macro à exécuter en PDF, Word, Excel, etc., etc.Je décris une liste de contrôle de débogage complète dans cette autre réponse .
J'étais VRAIMENT perplexe sur celui-ci car la documentation n'est pas entièrement vraie.
Il s'avère que dans la version 8 (et peut-être plus tôt), vous ne pouvez pas utiliser le mot
set
dans votre modélisation. La documentation décrit "le deuxième formulaire" comme étant/* vim: set ai tw=75: */
mais cela ne fonctionne pas. Vous devez utiliser "le premier formulaire"// vim: ai tw=75
Remarque: vous pouvez utiliser l'un de ces types d'indicateurs de commentaire. Ou pas du tout.
la source
set
fonctionne bien pour moi sur vim 8.0 (mais pas sur 7.4). Il convient également de noter qu'avec le deuxième formulaire// vim: ai tw=75
, il ne peut pas y avoir d'autres caractères à la fin de la ligne, ou vim se plaindra et ignorera la modeline.VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Nov 24 2016 16:44:48) Inklusive der Korrekturen: 1-1689 Extra-Patches: 8.0.0056 Verändert von [email protected] Übersetzt von [email protected] Riesige Version mit GTK2-GNOME GUI.
(Les dernières lignes signifient modifié par ... , compilé par ... , version énorme ... ).set modelines=1
(ou toute valeur différente de 0) dans mon ~ / .vimrc l'a fait fonctionner pour moi.la source
modeline
n'est pas également défini (ce qui est par défaut dans Vim sauf si vous êtes root)set nomodeline
en/etc/vimrc
raison de toutes les vulnérabilités avec la manipulation des modelines dans vim.modelines
une valeur non nulle. L'aide indique que la valeur par défaut est5
, c'est donc ce que je l'ai défini et cela a fait l'affaire pour moi. Le déclare que,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.
dans ~ / .vimrc, vous devez définir ce qui suit:
la source
Ajouter juste ce qui suit à mon
~/.vimrc
travail pour moi sur ma boîte Funtoo Linux:la source
Étant donné que cela semble apparaître dans les recherches:
J'ai eu le même problème:
n'a pas fonctionné, ce qui entraîne également ft = conf. sans la modeline dans mon ~ / .bash_alias, ft est vide, donc quelque chose change.
tandis que
travaillé. la dernière présence ":" ne semble pas pertinente.
Je suis sur OSX avec une version brassée Vim8, pour mémoire.
c'est bizarre parce que la modeline aide à la fois
et
semblent être pris en charge.
La sortie de
avec "vim: filetype = sh" est
sans modeline:
avec "vim: set filetype = sh"
Il peut y avoir un effet secondaire quelque part dans ma conf, mais la syntaxe de modeline non compatible est la seule qui fonctionne comme prévu pour moi.
la source
/usr/share/vim/vim80/debian.vim
fromvim-common
sur les distributions basées sur Debian désactivemodeline
par défaut.Vous devez activer
modeline
explicitement dans votre fichier.vimrc
ou~/.vim/vimrc
.la source
Cela est probablement dû à la désactivation de la modeline.
Je travaille autour de cela en:
Dans ce cas, les commandes par défaut sur liste blanche incluent
filetype
.la source