Como listar as opções disponíveis de um plugin?


10

Recentemente, descobri que YouCompleteMeexiste uma g:ycm_autoclose_preview_window_after_insertionopção que oculta automaticamente a janela de visualização da documentação após sair do modo de inserção e também comecei recentemente a usar o vim, portanto, foi a primeira vez que defini uma opção.

Então me perguntei se outros plugins que eu compilava no meu ambiente vim têm opções disponíveis, sem procurá-los manualmente.

Eles são registrados globalmente quando o vim é iniciado, para que um comando que os lista esteja disponível ou isso não possa ser feito?


Você não pode. Variáveis ​​para plugins precisam ser documentadas. Não há como saber quais variáveis ​​são usadas sem ler o código.
Christian Brabandt

Respostas:


6

O Vim não fornece nenhuma maneira de conhecer todas as opções possíveis de plugins.

Como criador de plugins, posso dizer que isso é bastante complexo, pois existem muitas maneiras diferentes de proceder. Por exemplo, ou consideramos que, se o usuário final não forneceu um valor para uma opção .vimrc, forçamos essa opção a existir e ser igual a um valor padrão, ou podemos dizer: "aceite o valor definido por o usuário final ou use um valor padrão codificado ".

Com essa primeira abordagem, o usuário final pode ver a lista de opções disponíveis com a c_CTRL-D, ou c_TAB, etc.

Mais e mais plugins escolhem organizar todas as suas opções em dicionários. ou seja, em vez de ter g:plugin_foo_optione g:plugin_bar_option, temos g:plugin.foo_optione g:plugin.bar_option. Isso evita poluir a lista g:de opções globais, mas perdemos o preenchimento automático da linha de comando (posso eventualmente abrir uma questão do assunto no vim github).

Até agora, só falei sobre opções globais. A maioria dos plugins não tenta oferecer suporte a opções mais específicas, mesmo que devessem ter feito isso. Por exemplo, lamento que nem o YouCompleteMe nem o alternativo , nem muitos outros plugins, usem opções específicas do projeto em vez de opções globais. De fato, dependendo do projeto em que estou trabalhando, quero definir suas respectivas opções com valores diferentes. Infelizmente, este não é um fluxo de trabalho que eles consideraram. Nos meus plugins, muitas opções podem ser especializadas em projetos ou em buffer. Ultimamente, venho com um experimento sobre o assunto. Mas mesmo com o par g:plugin_option+ simples e usual b:plugin_option, é quase impossível conhecer todas as opções disponíveis.

Às vezes, tento oferecer comandos que ajudam a definir opções, como fiz com o build-tools-wrappers, ou até para exibir algumas opções no menu (ao usar o gvim), mas está longe de ser perfeito.

Receio que a documentação seja a melhor coisa disponível. Você pode até tentar :h pluginname^D. É provavelmente a melhor abordagem disponível.


Ótima explicação das opções nos bastidores. E o :h pluginnameé realmente muito bom! Portanto, não preciso sair do vim várias vezes para ler a documentação de plugins diferentes.
Iulian Onofrei 4/17/17

2

O Vim não tem um referencial das opções disponíveis. o melhor que você pode fazer é ver o que foi inicializado.

Para opções de built-in do Vim há o comando :set. De :h :set:

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

Você não verá todas as opções disponíveis, apenas as que você modificou.

Você também pode usar :letpara listar o valor de todas as variáveis ​​declaradas e :let g:para uma lista das variáveis ​​globais. (Veja :h E121uma lista da variável que você pode mostrar).

Observe que essas listas nem sempre são fáceis de ler / analisar. Para os plugins, sua melhor opção é ler a documentação e encontrar a opção que você precisa.

Você também pode se interessar por esta dica da wikia como exibir o ambiente vim


Aceitou a outra resposta por ser mais detalhada, embora isso tenha comandos interessantes relacionados à minha pergunta que possam ajudar.
Iulian Onofrei 4/17/17
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.