17

У меня есть файл .aliases для bash и zsh, я поставил эту строку

# vim: set filetype=bash: 

но если я сделаю

: echo &ft

Я получаю conf

6 ответов6

23

Это должно работать. Я попробовал эту линию сам, и это сработало. Я мог бы быть, что ваша опция 'modeline' была установлена на 'nomodeline'. Попробуйте выполнить это и посмотрите, что вы получите.

:verbose set modeline?

Это скажет вам значение параметра 'modeline' и, если не значение по умолчанию, где он был установлен в последний раз.

Некоторые дистрибутивы Linux устанавливают nomodeline в /etc /vimrc или /usr /share /vim /vimrc в качестве меры безопасности, хотя проблемы безопасности с modeline уже давно исправлены.

11

set modelines=1 (или любое значение, отличное от 0) в моем ~/.vimrc, это работает на меня.

10

Я опишу полный контрольный список отладки в этом другом ответе.

Я был ДЕЙСТВИТЕЛЬНО озадачен этим, потому что документация не совсем верна.

Оказывается, в версии 8 (а может и раньше) вы не можете использовать слово, set в вашей моделине. Документация описывает "вторую форму" как /* vim: set ai tw=75: */ но это не работает. Вы должны использовать "первую форму" // vim: ai tw=75

Примечание. Вы можете использовать любой из этих индикаторов комментариев. Или нет вообще.

9

в ~/.vimrc вам нужно установить следующее:

set nocompatible 
filetype plugin on
set modeline 
5

Добавление всего лишь следующего к моему ~/.vimrc работало для меня на моем компьютере с Funtoo Linux:

set modeline
0

Так как это похоже на поиски:

У меня такая же проблема:

# 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:set filetype = sh"

filetype=conf
     Last set from /usr/local/Cellar/vim/8.0.1350/share/vim/vim80/filetype.vim

Где-то в моем conf может быть побочный эффект, но не совместимый синтаксис моделин - единственный, который работает, как и ожидалось.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .