Ich habe hier alles ausprobiert und nichts hat funktioniert. Ich benutze Vim seit 18 Jahren. Dies ist das erste Mal, dass ich Modeline nicht zum Laufen bringen konnte.
Das sollte funktionieren. Ich habe diese Linie selbst ausprobiert und es hat funktioniert. Ich könnte sein, dass Ihre Option 'modeline' auf 'nomodeline' gesetzt wurde. Versuchen Sie dies auszuführen und sehen Sie, was Sie bekommen.
:verbose set modeline?
Hier sehen Sie den Wert der Option 'modeline' und, falls nicht der Standardwert, den zuletzt festgelegten Wert.
Einige Linux-Distributionen haben 'nomodeline' in / etc / vimrc oder / usr / share / vim / vimrc als Sicherheitsmaßnahme festgelegt, obwohl die Sicherheitsprobleme mit 'modeline' schon lange behoben wurden.
@duckbrain Es ist grundsätzlich unmöglich zu garantieren, dass alle Sicherheitsprobleme jemals behoben wurden, solange es jemals möglich ist, eingebettete Anweisungen, die vom Code ausgeführt werden sollen, der die Daten betrachtet, in die eigentlichen Daten aufzunehmen. Deshalb ist die Dokumentation für Keith Bostic des NVI hat gesagt , der immer , modelinesdass die Option ist nicht implementiert und dass es nie sein. Dies ist genau wie alle Sicherheitslücken, die sich aus in Dateien eingebetteten Befehlen oder Makroanweisungen ergeben und in PDF, Word, Excel, & c & c & c ausgeführt werden.
Ich war wirklich auf diesem ein ratlos , weil die Dokumentation ist nicht ganz richtig.
Es stellt sich heraus, dass Sie in Version 8 (und möglicherweise früher) das Wort setin Ihrer Modeline nicht verwenden können. In der Dokumentation wird "das zweite Formular" als solches beschrieben /* vim: set ai tw=75: */, dies funktioniert jedoch nicht. Sie müssen "das erste Formular" verwenden// vim: ai tw=75
Hinweis: Sie können beide Arten von Kommentarindikatoren verwenden. Oder gar keine.
Dies gilt nicht unbedingt für alle vim-Installationen. Das Formular mit setfunktioniert gut für mich auf vim 8.0 (obwohl nicht auf 7.4). Erwähnenswert ist auch, dass bei der zweiten Form // vim: ai tw=75keine anderen Zeichen am Ende der Zeile stehen dürfen. Andernfalls beschwert sich vim und ignoriert die Modeline.
Josh
Dies sollte definitiv als Fehler (oder als veraltete Dokumentation) gemeldet werden. Ich reproduzierte auf 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. (Die letzten Zeilen bedeuten geändert von ... , zusammengestellt von ... , riesige Version ... ).
LittleByBlue
Ich habe versucht, es auf der Mailingliste zu adressieren. Sie waren sich nicht einig.
Bruno Bronosky
@BrunoBronosky hast du einen Link zum Mail-Thread? Möchte ihre Argumentation lesen.
Dies hat keine Auswirkung, wenn modelinenicht auch festgelegt ist (was in Vim standardmäßig der
Fall
Gentoo hat eine systemweite set nomodelinein /etc/vimrcGrund alle Schwachstellen mit -Modelines in vim Handhabung.
MattBianco
In meinem Fall musste ich auch einen modelinesWert ungleich Null einstellen . In der Hilfe heißt es 5, dass die Standardeinstellung "" ist , und das hat mir geholfen . Die Staaten,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
Möglicherweise gibt es irgendwo in meinem conf einen Nebeneffekt, aber die nicht kompatible Modeline-Syntax ist die einzige, die für mich wie erwartet funktioniert.
" modelines have historically been a source of security/resource
" vulnerabilities -- disable by default, even when 'nocompatible' is set
set nomodeline
Sie müssen modelineexplizit in Ihrer .vimrcoder ~/.vim/vimrcDatei aktivieren .
Antworten:
Das sollte funktionieren. Ich habe diese Linie selbst ausprobiert und es hat funktioniert. Ich könnte sein, dass Ihre Option 'modeline' auf 'nomodeline' gesetzt wurde. Versuchen Sie dies auszuführen und sehen Sie, was Sie bekommen.
Hier sehen Sie den Wert der Option 'modeline' und, falls nicht der Standardwert, den zuletzt festgelegten Wert.
Einige Linux-Distributionen haben 'nomodeline' in / etc / vimrc oder / usr / share / vim / vimrc als Sicherheitsmaßnahme festgelegt, obwohl die Sicherheitsprobleme mit 'modeline' schon lange behoben wurden.
quelle
modelines
dass die Option ist nicht implementiert und dass es nie sein. Dies ist genau wie alle Sicherheitslücken, die sich aus in Dateien eingebetteten Befehlen oder Makroanweisungen ergeben und in PDF, Word, Excel, & c & c & c ausgeführt werden.In dieser anderen Antwort beschreibe ich eine vollständige Debug-Checkliste .
Ich war wirklich auf diesem ein ratlos , weil die Dokumentation ist nicht ganz richtig.
Es stellt sich heraus, dass Sie in Version 8 (und möglicherweise früher) das Wort
set
in Ihrer Modeline nicht verwenden können. In der Dokumentation wird "das zweite Formular" als solches beschrieben/* vim: set ai tw=75: */
, dies funktioniert jedoch nicht. Sie müssen "das erste Formular" verwenden// vim: ai tw=75
Hinweis: Sie können beide Arten von Kommentarindikatoren verwenden. Oder gar keine.
quelle
set
funktioniert gut für mich auf vim 8.0 (obwohl nicht auf 7.4). Erwähnenswert ist auch, dass bei der zweiten Form// vim: ai tw=75
keine anderen Zeichen am Ende der Zeile stehen dürfen. Andernfalls beschwert sich vim und ignoriert die 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.
(Die letzten Zeilen bedeuten geändert von ... , zusammengestellt von ... , riesige Version ... ).set modelines=1
(oder ein Wert ungleich 0) in meinem ~ / .vimrc hat es für mich funktioniert.quelle
modeline
nicht auch festgelegt ist (was in Vim standardmäßig derset nomodeline
in/etc/vimrc
Grund alle Schwachstellen mit -Modelines in vim Handhabung.modelines
Wert ungleich Null einstellen . In der Hilfe heißt es5
, dass die Standardeinstellung "" ist , und das hat mir geholfen . Die Staaten,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.
In ~ / .vimrc müssen Sie Folgendes einstellen:
quelle
~/.vimrc
Fügen Sie meiner für mich auf meiner Funtoo Linux-Box ausgeführten Arbeit Folgendes hinzu:quelle
Da dies bei Suchanfragen auftaucht:
Ich hatte das gleiche problem:
funktionierte nicht, was ebenfalls zu ft = conf führte. Ohne die Modeline in meinem ~ / .bash_alias ist ft leer, also ändert sich etwas.
während
hat funktioniert. das letzte ":" scheint irrelevant zu sein.
Ich bin auf OSX mit einer von Vim8 gebrauten Version für die Rekorde.
es ist komisch, weil von der modeline beide helfen
und
scheinen unterstützt zu werden.
Die Ausgabe von
mit "vim: filetype = sh" ist
ohne Modelin:
mit "vim: set filetype = sh"
Möglicherweise gibt es irgendwo in meinem conf einen Nebeneffekt, aber die nicht kompatible Modeline-Syntax ist die einzige, die für mich wie erwartet funktioniert.
quelle
/usr/share/vim/vim80/debian.vim
fromvim-common
on Debian-basierte Distributionenmodeline
werden standardmäßig deaktiviert .Sie müssen
modeline
explizit in Ihrer.vimrc
oder~/.vim/vimrc
Datei aktivieren .quelle
Höchstwahrscheinlich liegt das daran, dass Modeline deaktiviert ist.
Daran arbeite ich vorbei:
In diesem Fall sind die Standardbefehle auf der Whitelist enthalten
filetype
.quelle