Ich habe eine Datei .aliases
für bash und zsh aufgerufen , ich habe diese Zeile gesetzt
# vim: set filetype=bash:
aber wenn ich mache
: echo &ft
Ich bekomme conf
Ich habe eine Datei .aliases
für bash und zsh aufgerufen , ich habe diese Zeile gesetzt
# vim: set filetype=bash:
aber wenn ich mache
: echo &ft
Ich bekomme conf
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.
: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.
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.
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 pkg-vim-maintainers@lists.alioth.debian.org Übersetzt von pkg-vim-maintainers@lists.alioth.debian.org 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.
modeline
nicht auch festgelegt ist (was in Vim standardmäßig der
set nomodeline
in /etc/vimrc
Grund alle Schwachstellen mit -Modelines in vim Handhabung.
modelines
Wert 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.
~/.vimrc
Fügen Sie meiner für mich auf meiner Funtoo Linux-Box ausgeführten Arbeit Folgendes hinzu:
set modeline
Da dies bei Suchanfragen auftaucht:
Ich hatte das gleiche problem:
# vim: set filetype=sh:
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
# vim: filetype=sh:
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
[text]{white}{vi:|vim:|ex:}[white]{options}
und
[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
scheinen unterstützt zu werden.
Die Ausgabe von
verbose set ft?
mit "vim: filetype = sh" ist
filetype=sh
Last set from modeline
ohne Modelin:
filetype=
mit "vim: set filetype = sh"
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.
/usr/share/vim/vim80/debian.vim
from vim-common
on Debian-basierte Distributionen modeline
werden standardmäßig deaktiviert .
" modelines have historically been a source of security/resource
" vulnerabilities -- disable by default, even when 'nocompatible' is set
set nomodeline
Sie müssen modeline
explizit in Ihrer .vimrc
oder ~/.vim/vimrc
Datei aktivieren .
set modeline
Höchstwahrscheinlich liegt das daran, dass Modeline deaktiviert ist.
Daran arbeite ich vorbei:
In diesem Fall sind die Standardbefehle auf der Whitelist enthalten filetype
.