Игнорировать ошибки "Неизвестная опция" в vimrc - программирование
Подтвердить что ты не робот

Игнорировать ошибки "Неизвестная опция" в vimrc

Я использую тот же .vimrc между машинами, на которых установлены оба Vim 7.2 и 7.3. Машины с Vim 7.2 жалуются на мои 7,3-специфичные параметры каждый раз, когда я открываю файл:

Error detected while processing /home/spiffytech/.vimrc:
line   72:
E518: Unknown option: rnu
line   73:
E518: Unknown option: undofile
line   74:
E518: Unknown option: undodir=/tmp
line   75:
E518: Unknown option: cryptmethod=blowfish
Press ENTER or type command to continue

Как я могу заставить Vim игнорировать эти ошибки и не запрашивать, чтобы я нажимал enter при открытии файлов?

4b9b3361

Ответ 1

Вставьте новые параметры в:

if version >= 703
  set rnu ...
endif

Обратитесь за помощью к v:version для получения дополнительной информации об используемом номере версии:

                                        *v:version* *version-variable*
v:version       Version number of Vim: Major version number times 100 plus
                minor version number.  Version 5.0 is 500.  Version 5.1 (5.01)
                is 501.  Read-only.  "version" also works, for backwards
                compatibility.
                Use |has()| to check if a certain patch was included, e.g.: >
                        if has("patch123")
<               Note that patch numbers are specific to the version, thus both
                version 5.0 and 5.1 may have a patch 123, but these are
                completely different.

Ответ 2

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

например:.

if has('persistent_undo')
  set undofile
  set undodir=/tmp
endif

" Some options can only be checked with exists('+option'); I'm not sure why
if exists('+relativenumber')
  set rnu
endif

if has('cryptv')
  set cryptmethod=blowfish
end

Ответ 3

Иногда опция является законной, но недоступной в текущей среде. Например:

$ vi
Error detected while processing /home/username/.vimrc:
line    9:
Unknown option: indentexpr=

Проверить, существует ли опция или нет, и избежать ошибки, если она недоступна:

if exists("&indentexpr")
  :set indentexpr=
endif

Ответ 4

В вас .vimrc вы можете протестировать версию Vim, которую вы выполняете.

См. help v:version

if v:version >= 703
    "do something
    set rnu
    set undofile
    ...
endif

703 соответствует Vim 7.3 (что на самом деле не интуитивно...)

Ответ 5

Вы можете игнорировать любую ошибку с помощью silent! ..., например silent! set undofile

Ответ 6

Я бы сказал, что на этот вопрос не ответил. Рассмотрим Session.vim, созданный на компьютере A, который имеет более позднюю версию vim. В исходном управлении, когда другой компьютер B пытается открыть Session.vim, запускаются ошибки. Нет смысла вручную переносить номер версии для того, что должно быть автоматизированным процессом. При таком поведении новая версия должна автоматически обернуть новую команду в номере версии при сохранении сеанса - то, чего не делает 7.3.