Это должно работать. Я попробовал эту линию сам, и это сработало. Я мог бы быть, что ваша опция 'modeline' была установлена на 'nomodeline'. Попробуйте выполнить это и посмотрите, что вы получите.
:verbose set modeline?
Это скажет вам значение параметра 'modeline' и, если не значение по умолчанию, где он был установлен в последний раз.
Некоторые дистрибутивы Linux устанавливают nomodeline в / etc / vimrc или / usr / share / vim / vimrc в качестве меры безопасности, хотя проблемы безопасности с modeline уже давно устранены.
@duckbrain Принципиально невозможно гарантировать, что все проблемы безопасности когда-либо были устранены, если есть возможность включать встроенные инструкции, которые должны выполняться кодом, который просматривает данные в самих данных. Поэтому документация Кит Бостик в NVI всегда говорил о modelinesтом , что вариант Unimplemented и что он никогда не будет. Это так же, как все ошибки безопасности, возникающие из встроенных в файл команд или макрокоманд для запуска в PDF, Word, Excel, & c & c & c.
Я был очень озадачен на это потому , что документация является не совсем верно.
Оказывается, в версии 8 (а может и раньше) вы не можете использовать это слово setв своей моделине. Документация описывает «вторую форму» как существующую, /* vim: set ai tw=75: */но это не работает. Вы должны использовать «первую форму»// vim: ai tw=75
Примечание. Вы можете использовать любой из этих индикаторов комментариев. Или нет вообще.
Это не обязательно верно для всех установок vim. Форма с setотлично работает для меня на Vim 8.0 (хотя не на 7,4). Также стоит отметить, что со второй формой // vim: ai tw=75не может быть никаких других символов в конце строки, иначе vim будет жаловаться и игнорировать моделину.
Джош
Об этом следует обязательно сообщать как об ошибке (или как устаревшую документацию). Я воспроизвел на 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. (Последние строки означают изменено ... , составлено ... , огромная версия ... ).
LittleByBlue
Я попытался обратиться к нему в списке рассылки. Они не согласны.
Бруно Броноски
@BrunoBronosky у вас есть ссылка на почтовую ветку? Хотел бы прочитать их рассуждения.
Это не имеет никакого эффекта, если modelineоно также не установлено (это по умолчанию в Vim, если вы не root)
kynan
Gentoo имеет общесистемный set nomodelineв /etc/vimrcсвязи с все уязвимости с ModeLines обработки в Vim.
MattBianco
В моем случае мне также пришлось установить modelinesненулевое значение. В справке говорится, что по умолчанию установлено значение 5, поэтому я установил его, и это помогло мне. В штатах говорится, что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.
/usr/share/vim/vim80/debian.vimfrom vim-commonв дистрибутивах на основе Debian отключается modelineпо умолчанию.
" modelines have historically been a source of security/resource
" vulnerabilities -- disable by default, even when 'nocompatible' is set
set nomodeline
Вы должны включить modelineявно в вашем .vimrcили ~/.vim/vimrcфайле.
Ответы:
Это должно работать. Я попробовал эту линию сам, и это сработало. Я мог бы быть, что ваша опция 'modeline' была установлена на 'nomodeline'. Попробуйте выполнить это и посмотрите, что вы получите.
Это скажет вам значение параметра 'modeline' и, если не значение по умолчанию, где он был установлен в последний раз.
Некоторые дистрибутивы Linux устанавливают nomodeline в / etc / vimrc или / usr / share / vim / vimrc в качестве меры безопасности, хотя проблемы безопасности с modeline уже давно устранены.
источник
modelines
том , что вариант Unimplemented и что он никогда не будет. Это так же, как все ошибки безопасности, возникающие из встроенных в файл команд или макрокоманд для запуска в PDF, Word, Excel, & c & c & c.Я опишу полный контрольный список отладки в этом другом ответе .
Я был очень озадачен на это потому , что документация является не совсем верно.
Оказывается, в версии 8 (а может и раньше) вы не можете использовать это слово
set
в своей моделине. Документация описывает «вторую форму» как существующую,/* vim: set ai tw=75: */
но это не работает. Вы должны использовать «первую форму»// vim: ai tw=75
Примечание. Вы можете использовать любой из этих индикаторов комментариев. Или нет вообще.
источник
set
отлично работает для меня на Vim 8.0 (хотя не на 7,4). Также стоит отметить, что со второй формой// vim: ai tw=75
не может быть никаких других символов в конце строки, иначе vim будет жаловаться и игнорировать моделину.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.
(Последние строки означают изменено ... , составлено ... , огромная версия ... ).set modelines=1
(или любое значение, отличное от 0) в моем ~ / .vimrc заставило его работать на меня.источник
modeline
оно также не установлено (это по умолчанию в Vim, если вы не root)set nomodeline
в/etc/vimrc
связи с все уязвимости с ModeLines обработки в Vim.modelines
ненулевое значение. В справке говорится, что по умолчанию установлено значение5
, поэтому я установил его, и это помогло мне. В штатах говорится, что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 вам нужно установить следующее:
источник
~/.vimrc
На моем компьютере с Funtoo Linux добавили только следующее :источник
Так как это похоже на поиски:
У меня такая же проблема:
не работает, в результате чего ft = conf также. без моделин в моем ~ / .bash_alias, ft пусто, так что что-то меняется.
пока
работал. последнее присутствие ":" кажется несущественным.
Я на OSX с вареной версией Vim8, для записей.
это странно, потому что от моделина помогают оба
и
кажется, поддерживается.
Выход из
с "vim: filetype = sh" является
без моделин:
с помощью "vim: set filetype = sh"
Где-то в моем conf может быть побочный эффект, но не совместимый синтаксис моделин - единственный, который работает, как и ожидалось.
источник
/usr/share/vim/vim80/debian.vim
fromvim-common
в дистрибутивах на основе Debian отключаетсяmodeline
по умолчанию.Вы должны включить
modeline
явно в вашем.vimrc
или~/.vim/vimrc
файле.источник
Скорее всего, это связано с отключением моделинов.
Я работаю над этим:
В этом случае команды по умолчанию включены в белый список
filetype
.источник