В сценарии vim, как узнать, была ли указана настройка в .vimrc? - PullRequest
1 голос
/ 25 июня 2011

В плагине vim как узнать, установил ли пользователь переменную в своем файле .vimrc?

Например, у меня есть .vimrc:

set shiftwidth=2

Затем я загружаю плагин, который имеет

set shiftwidth=3

Так что я думаю изменить плагин так:

if !exists("shiftwidth")
  set shiftwidth=3
endif

Но когда я загружаю новое окно vim с загруженным исправленным плагином, мои вкладки по-прежнему имеют значение 3, а не 2.

Как я могу сделать так, чтобы он устанавливал только shiftwidth=3, если иное не указано в .vimrc?

1 Ответ

2 голосов
/ 26 июня 2011

Эти команды должны показывать, где было установлено shiftwidth:

:set verbose=15
:set shiftwidth
:set verbose=0

Если вы хотите программно что-то сделать с этой информацией, вам нужно redirect вывести подробный вывод и проанализировать то, что выwant:

:redir => myvariable
:set verbose=15
:set shiftwidth
:set verbose=0
:redir END

myvariable теперь будет иметь текст, который в противном случае был бы напечатан на экране.

ПЕРЕСМОТРЕННЫЙ ОТВЕТ Вот способ, который, я думаю, вы могли бы сделатьчто вы уточнить в ваших комментариях.

Добавить последнюю строку в пользовательский vimrc, чтобы сохранить текущее значение shiftwidth в глобальной переменной.Значение будет сохранено до загрузки любых плагинов, если только плагины не были явно получены в vimrc перед последней строкой.Затем вы можете сбросить shiftwidth до этого значения в своем собственном плагине.

[everything in vimrc comes before this line]
:let g:vimrc_shiftwidth = &shiftwidth

Вы можете программно добавить эту строку с помощью чего-то вроде команды write >> [file].Предположительно, вы бы добавили комментарий, указывающий, какой плагин добавил эту команду в vimrc.Кроме того, я не думаю, что это будет захватывать правильное значение, например, в случае, когда пользователь использует опцию exrc и устанавливает shiftwidth в другом vimrc.В общем, все еще не рекомендуется.

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