Игнорировать ошибки "Неизвестная опция" в 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 при открытии файлов?
Ответы
Ответ 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.