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.
@duckbrain Zasadniczo niemożliwe jest zagwarantowanie, że wszystkie problemy bezpieczeństwa zostały kiedykolwiek naprawione, o ile możliwe jest dołączenie wbudowanych instrukcji, które mają być wykonane przez kod przeglądający dane w samych danych. Dlatego w dokumentacji nvi Keitha Bostica zawsze było powiedziane, 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.
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 setw 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.
To niekoniecznie jest prawdą dla wszystkich instalacji vima. Formularz z setdziała mi dobrze na vimie 8.0 (choć nie na 7.4). Warto również zauważyć, że w drugiej formie // vim: ai tw=75na końcu linii nie może być żadnych innych znaków, w przeciwnym razie vim będzie narzekał i ignorował modelinę.
Josh
Zdecydowanie należy to zgłosić jako błąd (lub jako przestarzałą dokumentację). Powtórzyłem 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. (Ostatnie wiersze oznaczają zmodyfikowane przez ... , skompilowane przez ... , ogromna wersja ... ).
LittleByBlue,
Próbowałem rozwiązać ten problem na liście mailingowej. Nie zgodzili się.
Bruno Bronosky,
@BrunoBronosky czy masz link do wątku pocztowego? Chciałbym przeczytać ich uzasadnienie.
Nie ma to żadnego efektu, jeśli modelinenie jest również ustawione (co jest domyślnie w Vimie, chyba że jesteś rootem)
kynan
Gentoo ma dla całego systemu set nomodelinew /etc/vimrcpowodu wszystkie luki z Modelines obchodzenia w vim.
MattBianco
W moim przypadku musiałem również ustawić modelineswartość 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.
Ben
9
w ~ / .vimrc musisz ustawić następujące ustawienia:
/usr/share/vim/vim80/debian.vimz vim-commonna 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 modelinewyraźnie włączyć w swoim .vimrclub ~/.vim/vimrcpliku.
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.
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.
źródło
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.
źródło
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 [email protected] Übersetzt von [email protected] 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.źródło
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 jest5
, 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.
w ~ / .vimrc musisz ustawić następujące ustawienia:
źródło
Dodanie tylko następujących elementów do mojego
~/.vimrc
działającego na moim pudełku Funtoo Linux:źródło
Ponieważ wydaje się, że pojawia się to podczas wyszukiwania:
Miałem ten sam problem:
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
pracował ostatnia obecność „:” wydaje się być nieistotna.
Jestem na OSX z zaparzoną wersją Vim8, dla przypomnienia.
to dziwne, ponieważ z modelki pomagają oba
i
wydają się być wspierani.
Dane wyjściowe
z „vim: filetype = sh” jest
bez modeliny:
z „vim: set filetype = sh”
Gdzieś na moim koniu może występować efekt uboczny, ale niezgodna modelowa składnia jest jedyną, która działa zgodnie z oczekiwaniami.
źródło
/usr/share/vim/vim80/debian.vim
zvim-common
na dystrybucjach opartych na Debianiemodeline
domyślnie wyłącza .Musisz
modeline
wyraźnie włączyć w swoim.vimrc
lub~/.vim/vimrc
pliku.źródło
Najprawdopodobniej wynika to z wyłączenia modeliny.
Obejmuję to przez:
W takim przypadku domyślnymi poleceniami z białej listy są
filetype
.źródło