Mam plik o nazwie .aliases
bash i zsh, umieszczam tę linię
# vim: set filetype=bash:
ale jeśli zrobię
: echo &ft
dostaję conf
Mam plik o nazwie .aliases
bash i zsh, umieszczam tę linię
# vim: set filetype=bash:
ale jeśli zrobię
: echo &ft
dostaję conf
Odpowiedzi:
To powinno działać. Sam spróbowałem tej linii i zadziałało. Możliwe, że twoja opcja „modeline” została ustawiona na „nomodeline”. Spróbuj wykonać to i zobacz, co otrzymujesz.
:verbose set modeline?
To powie ci wartość opcji „modeline”, a jeśli nie domyślną, to gdzie była ostatnio ustawiona.
Niektóre dystrybucje Linuksa ustawiają „nomodeline” w / etc / vimrc lub / usr / share / vim / vimrc jako środek bezpieczeństwa, mimo że problemy bezpieczeństwa z „modeline” zostały już dawno naprawione.
modelines
że opcja jest niewdrożona i nigdy nie będzie. Jest to tak samo, jak wszystkie błędy bezpieczeństwa wynikające z poleceń osadzonych w plikach lub instrukcji makr, które można uruchamiać w plikach PDF, Word, Excel i C&C.
W drugiej odpowiedzi opisuję pełną listę kontrolną debugowania .
NAPRAWDĘ mnie to zaskoczyło, ponieważ dokumentacja nie jest do końca prawdziwa.
Okazuje się, że w wersji 8 (i być może wcześniejszej) nie możesz użyć tego słowa set
w swojej modelinie. Dokumentacja opisuje „drugą formę” jako istniejącą, /* vim: set ai tw=75: */
ale to nie działa. Musisz użyć „pierwszej formy”// vim: ai tw=75
Uwaga: Możesz użyć jednego z tego rodzaju wskaźników komentarzy. Lub wcale.
set
działa mi dobrze na vimie 8.0 (choć nie na 7.4). Warto również zauważyć, że w drugiej formie // vim: ai tw=75
na końcu linii nie może być żadnych innych znaków, w przeciwnym razie vim będzie narzekał i ignorował modelinę.
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.
(Ostatnie wiersze oznaczają zmodyfikowane przez ... , skompilowane przez ... , ogromna wersja ... ).
set modelines=1
(lub dowolna wartość inna niż 0) w moim ~ / .vimrc sprawiło, że działał dla mnie.
modeline
nie jest również ustawione (co jest domyślnie w Vimie, chyba że jesteś rootem)
set nomodeline
w /etc/vimrc
powodu wszystkie luki z Modelines obchodzenia w vim.
modelines
wartość niezerową. Pomoc mówi, że domyślnie jest 5
, więc ustawiłem to i to załatwiło sprawę. Stwierdza, żeIf '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.
Dodanie tylko następujących elementów do mojego ~/.vimrc
działającego na moim pudełku Funtoo Linux:
set modeline
Ponieważ wydaje się, że pojawia się to podczas wyszukiwania:
Miałem ten sam problem:
# vim: set filetype=sh:
nie działał, co skutkowało również ft = conf. bez modeliny w mojej ~ / .bash_alias, ft jest pusty, więc coś się zmienia.
podczas
# vim: filetype=sh:
pracował ostatnia obecność „:” wydaje się być nieistotna.
Jestem na OSX z zaparzoną wersją Vim8, dla przypomnienia.
to dziwne, ponieważ z modelki pomagają oba
[text]{white}{vi:|vim:|ex:}[white]{options}
i
[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
wydają się być wspierani.
Dane wyjściowe
verbose set ft?
z „vim: filetype = sh” jest
filetype=sh
Last set from modeline
bez modeliny:
filetype=
z „vim: set filetype = sh”
filetype=conf
Last set from /usr/local/Cellar/vim/8.0.1350/share/vim/vim80/filetype.vim
Gdzieś na moim koniu może występować efekt uboczny, ale niezgodna modelowa składnia jest jedyną, która działa zgodnie z oczekiwaniami.
/usr/share/vim/vim80/debian.vim
z vim-common
na dystrybucjach opartych na Debianiemodeline
domyślnie wyłącza .
" modelines have historically been a source of security/resource
" vulnerabilities -- disable by default, even when 'nocompatible' is set
set nomodeline
Musisz modeline
wyraźnie włączyć w swoim .vimrc
lub ~/.vim/vimrc
pliku.
set modeline
Najprawdopodobniej wynika to z wyłączenia modeliny.
Obejmuję to przez:
W takim przypadku domyślnymi poleceniami z białej listy są filetype
.