У мене файл, який називається .aliases
bash і zsh, я ставлю цей рядок
# vim: set filetype=bash:
але якщо я зроблю
: echo &ft
я отримав conf
У мене файл, який називається .aliases
bash і zsh, я ставлю цей рядок
# vim: set filetype=bash:
але якщо я зроблю
: echo &ft
я отримав conf
Відповіді:
Це має спрацювати. Я сам спробував цю лінію, і вона спрацювала. Я можу бути, що ваш варіант 'modeline' встановив 'nomodeline'. Спробуйте виконати це і подивіться, що ви отримаєте.
:verbose set modeline?
Це покаже вам значення параметра "modeline", а якщо не за замовчуванням, де він був останній встановлений.
Деякі дистрибутиви Linux встановлюють "nomodeline" в / etc / vimrc або / usr / share / vim / vimrc як захід безпеки, хоча проблеми безпеки із "modeline" давно виправлені.
modelines
те, що варіант не застосовується і що його ніколи не буде. Це так само, як і всі помилки безпеки, що виникають із вбудованих файлів команд чи макро інструкцій для запуску в 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
працював на моєму вікні Funtoo Linux, лише наступне :
set modeline
Оскільки це, схоже, з’являється в пошуках:
У мене була така ж проблема:
# vim: set filetype=sh:
не спрацювало, що призвело і до ft = conf. без моделіну в моєму ~ / .bash_alias, ft порожній, тому щось змінюється.
поки
# vim: filetype=sh:
працювали. останнє ":" присутність здається не має значення.
Я перебуваю на OSX з версією Vim8, для записів.
це дивно, тому що від моделей допомагають обом
[text]{white}{vi:|vim:|ex:}[white]{options}
і
[text]{white}{vi:|vim:|Vim:|ex:}[white]se[t] {options}:[text]
начебто, підтримуються.
Вихід
verbose set ft?
з "vim: filetype = sh" є
filetype=sh
Last set from modeline
без моделіну:
filetype=
з "vim: встановити тип файлу = sh"
filetype=conf
Last set from /usr/local/Cellar/vim/8.0.1350/share/vim/vim80/filetype.vim
Десь у моєму конфлікті може виникнути побічний ефект, але несумісний синтаксис моделей - це єдиний, який працює як очікується для мене.
/usr/share/vim/vim80/debian.vim
з дистрибутиваvim-common
на основі Debianmodeline
за замовчуванням вимикається .
" modelines have historically been a source of security/resource
" vulnerabilities -- disable by default, even when 'nocompatible' is set
set nomodeline
Ви повинні ввімкнути modeline
чітко у своєму .vimrc
або ~/.vim/vimrc
файлі.
set modeline
Найімовірніше, це через відключення моделіну.
Я обіймаю це шляхом:
У цьому випадку команди з білого списку за замовчуванням включають filetype
.