Почему Vim игнорирует мои модельные ценности?

Я использую файл Python со следующей моделью в конце:

# vim: sts=4:ts=4:sw=4

Если я запустил Vim с этим файлом, modeline будет проигнорирован. Как я могу это исправить? И BTW, у меня nocompatible установлен в моем .vimrc.

Ответ 1

Я отследил проблему локальному плагину, называемому local_vimrc.vim. Тот факт, что modeline не работает, является побочным эффектом плагина.

Ответ 2

Вот что вы проверяете...

Шаг 1

Убедитесь, что ваши настройки правильные. Do...

:verbose set modeline? modelines?

Если вы видите любое из этих значений, оно не сработает.

  nomodeline
  modelines=0

(Добавив verbose перед командой set, вам сообщат, какой файл создал этот параметр. Спасибо, drew010)

То, что вам нужно увидеть, это (где 4 больше 0)

  modeline
        Last set from /usr/share/vim/vimrc
  modelines=4
        Last set from ~/.vim/vimrc

Шаг 2

Есть ли у вас строка с vim: , которая не касается других в последнем & lt; modelines & gt; строки вашего документа?

Серьезно, это все, что нужно.

Все эти моделины работают...

# vim: cursorline

// vim: cursorline

; vim: cursorline

vim: cursorline

# anything here vim: cursorline

even without a valid comment vim: cursorline

literally anything as long a space separates> vim: cursorline

# vim: set cursorline: <-that colon is required if you use the word "set" and this comment after the colon does not affect it.

Обратите внимание, что единственный способ получить комментарий после модельной строки - это использовать слово set. Но если вы используете set, вы должны ставить двоеточие в конце своих настроек, даже если у вас нет комментариев. Спасибо, Амадан

Шаг 3

И это важно! Используете ли вы слово set? (как описано во "второй форме" в файле настроек). Выньте set или добавьте двоеточие в конец.

Ни одна из этих работ...

# vim: set cursorline
       ^^^ issue: use of the word set without a trailing colon (:)

# vim:cursorline
      ^ issue: no space after the colon

#vim: cursorline
 ^ issue: no space before the word vim

Шаг 4

Вы не спали более 18 часов? Прежде чем сойти с ума, поспи. Завтра все еще будет сломано. Тогда вы, скорее всего, заметите проблему, когда снова просмотрите этот список.

Обновить заметки

Этот ответ использовался для включения этой претензии:

Используете ли вы слово set? (как это описано как "вторая форма" в файле настроек). Что ж, это не работает в версии 8, и я не знаю, когда она перестала работать, Используйте "первую форму".

Я ошибался. Это было отмечено @Amadan, и я исправил Шаг 3.

Ответ 3

У меня была аналогичная проблема с моей моделью, которая не работает. Ответы в этой теме помогли мне найти мой ответ (который добавлял set modeline к моему ~/.vimrc)

https://superuser.com/questions/323712/modeline-not-work-in-vim

Также одна вещь, которая помогла мне отладить это, это ввести: установить в vim. Это покажет вам различные значения, которые в настоящее время установлены.

Ответ 4

Если вы сохраняете и загружаете представления, например, с чем-то вроде следующего, ваша модельная строка не будет переоценена при повторном открытии файла.

autocmd BufWinLeave *.* mkview
autocmd BufWinEnter *.* silent loadview

Ответ 5

Первый шаг всегда смотреть в

/usr/share/vim/vim74/debian.vim

и закомментируйте строку nomodeline.

Распределения Kubuntu считают это угрозой безопасности.
(EG: libcal позволяет запускать произвольную программу)

Это проблема, только если кто-то из системы может запустить vim через веб-страницу. (не доверяйте вводу пользователя.)

Также возможно выполнить атаку ddos, используя проверку орфографии. (не доверяйте вводу пользователя.)