Как перечислить доступные варианты плагина?


10

Недавно я обнаружил, что YouCompleteMeесть g:ycm_autoclose_preview_window_after_insertionопция, которая автоматически скрывает окно предварительного просмотра документации после выхода из режима вставки, и я также недавно начал использовать vim, так что это был первый раз, когда я установил эту опцию.

Поэтому мне стало интересно, есть ли в других плагинах, которые я установил в моей среде vim, доступные варианты, не ища их вручную.

Регистрируются ли они глобально при запуске vim, чтобы команда, которая перечисляет их, была доступна, или это не может быть сделано?


Ты не можешь Переменные для плагинов должны быть документированы. Невозможно узнать, какие переменные используются, не читая код.
Кристиан Брабандт

Ответы:


6

Vim не предоставляет возможности узнать все возможные варианты плагинов.

Как автор плагинов, я могу сказать вам, что это довольно сложно, так как есть много разных способов продолжить. Например, либо мы считаем, что если конечный пользователь не предоставил значение для параметра в его, .vimrcто мы заставляем этот параметр существовать и быть равным значению по умолчанию, или мы можем сказать: «либо принять значение, установленное конечному пользователю, или используйте жестко заданное значение по умолчанию ".

При таком первом подходе конечный пользователь может видеть список доступных параметров с помощью c_CTRL-Dили c_TAB, и т. Д.

Все больше и больше плагинов предпочитают организовывать все свои опции в словари. то есть, вместо того , чтобы g:plugin_foo_optionи g:plugin_bar_optionу нас есть g:plugin.foo_optionи g:plugin.bar_option. Это позволяет избежать загрязнения списка g:глобальных опций, но мы теряем автодополнение в командной строке (я могу в конечном итоге открыть тему вопроса на vim github).

До сих пор я говорил только о глобальных вариантах. Большинство плагинов не пытаются поддерживать более конкретные параметры, даже если они должны были это сделать. Например, я сожалею, что ни YouCompleteMe, ни альтернативные , ни многие другие плагины не используют специфичные для проекта опции вместо глобальных. Действительно, в зависимости от проекта, над которым я работаю, я хочу установить для соответствующих параметров разные значения. К сожалению, это не рабочий процесс, который они рассмотрели. В моих плагинах многие параметры могут быть специализированными на проектной или буферной основе. В последнее время я выступил с экспериментом на эту тему. Но даже с обычной и простой парой g:plugin_option+ практически b:plugin_optionневозможно узнать все доступные варианты.

Иногда я пытаюсь предложить команды, которые помогают устанавливать параметры, как я делал с build-tools-wrappers, или даже отображать некоторые параметры в меню (при использовании gvim), но это действительно далеко от совершенства.

Я боюсь, что документация - лучшая доступная вещь. Вы даже можете попробовать :h pluginname^D. Это, вероятно, лучший доступный подход.


Отличное объяснение вариантов за кадром. И на :h pluginnameсамом деле это очень здорово! Поэтому мне не нужно уходить из vim несколько раз, чтобы прочитать документацию по различным плагинам.
Юлиан

2

Vim не имеет ссылки на доступные опции. лучшее, что вы можете сделать, это посмотреть, что было инициализировано.

Для встроенных опций Vim есть команда :set. От :h :set:

:se[t] Show all options that differ from their default value.

Вы не увидите все доступные опции, только те, которые вы изменили.

Вы также можете использовать :letдля перечисления значения всех объявленных переменных и :let g:для списка глобальных переменных. (Смотрите :h E121список переменных, которые вы можете показать).

Обратите внимание, что эти списки не всегда легко читать / анализировать. Для плагинов лучше всего прочитать документацию и найти нужный вариант.

Вы также можете быть заинтересованы в этом совете вики о том, как отображать среду vim


Принял другой ответ, поскольку он более многословен, хотя здесь есть интересные команды, связанные с моим вопросом, которые могут помочь.
Юлиан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.