vim e518: неизвестная опция: - PullRequest
13 голосов
/ 21 декабря 2011

У меня есть текстовый файл в системе Unix.Следующее содержимое текстового файла создает проблему:

good: ok line
vi: bad line
ok: ok line

Так что, если я запускаю: vim test.txt, я получаю следующую ошибку:

"test.txt" 3L, 39C
Error detected while processing modelines:
line    2:
E518: Unknown option: bad
Press ENTER or type command to continue

Если я удаляю свои ~/.vimrc,ошибка исчезает.Но что странно, так это то, что даже при пустом файле ~/.vimrc появляется ошибка.

Я понимаю, что ошибка возникает из-за того, что строка начинается с vi:, но я не понимаюпочему или как это исправить.

Ответы [ 3 ]

15 голосов
/ 21 декабря 2011

Строка vi: bad line имеет формат, который Vim распознает как modeline , как указано в сообщении об ошибке.Modelines позволяют устанавливать опции в файле.

Причина, по которой он не срабатывает, когда у вас нет ~/.vimrc, заключается в том, что Vim требует, чтобы вы установили 'nocompatible', чтобы моделины были включены по умолчанию, поскольку это особенность Vim.Наличие ~/.vimrc достаточно для того, чтобы Vim переключился из vi-совместимого режима в не совместимый, что приведет к установке опции 'modeline'.

Для дальнейшего использования вы можете легко найти помощьтемы в Vim через :help topic<Tab>.В этом случае :help modeline<Tab> дал бы вам несколько тем для изучения, которые объясняют эту функцию и как ее контролировать.

13 голосов
/ 21 декабря 2011

Вы можете отключить обработку моделин с помощью

:set nomodeline

См. :help modeline для получения дополнительной информации.

1 голос
/ 21 декабря 2011

Под :help auto-setting вы найдете этот параграф:

3. If you start editing a new file, and the 'modeline' option is on, a
   number of lines at the beginning and end of the file are checked for
   modelines.  This is explained here. 

There are two forms of modelines.  The first form:
    [text]{white}{vi:|vim:|ex:}[white]{options}

[text]      any text or empty
{white}     at least one blank character (<Space> or <Tab>)
{vi:|vim:|ex:}  the string "vi:", "vim:" or "ex:"
[white]     optional white space
{options}   a list of option settings, separated with white space or ':',
        where each part between ':' is the argument for a ":set"
        command (can be empty)

Example:
   vi:noai:sw=3 ts=6 ~

The second form (this is compatible with some versions of Vi):

    [text]{white}{vi:|vim:|ex:}[white]se[t] {options}:[text]

[text]      any text or empty
{white}     at least one blank character (<Space> or <Tab>)
{vi:|vim:|ex:}  the string "vi:", "vim:" or "ex:"
[white]     optional white space
se[t]       the string "set " or "se " (note the space)
{options}   a list of options, separated with white space, which is the
        argument for a ":set" command
:       a colon
[text]      any text or empty

Example:
   /* vim: set ai tw=75: */ ~

The white space before {vi:|vim:|ex:} is required.  This minimizes the chance
that a normal word like "lex:" is caught.  There is one exception: "vi:" and
"vim:" can also be at the start of the line (for compatibility with version
3.0).  Using "ex:" at the start of the line will be ignored (this could be
short for "example:").

Так что, вероятно, в вашем ~ / .vimrc у вас есть set nomodeline.

Строка, читающая vi: bad line, пытается установить опции bad и line, которые не могут быть установлены, следовательно, ошибка.

РЕДАКТИРОВАТЬ : Как указано в jamessan'S answer (+1), опция modeline устанавливается через настройку nocompatible простым существованием ~/.vimrc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...