Come elencare le opzioni disponibili di un plugin?


10

Recentemente ho scoperto che YouCompleteMeha g:ycm_autoclose_preview_window_after_insertionun'opzione che nasconde automaticamente la finestra di anteprima della documentazione dopo essere usciti dalla modalità di inserimento, e di recente ho anche iniziato a usare vim, quindi questa è stata la prima volta che ho impostato un'opzione.

Quindi mi chiedevo se altri plugin che avevo stipato nel mio ambiente di vim disponessero di opzioni, senza cercarle manualmente.

Sono registrati a livello globale all'avvio di vim, affinché sia ​​disponibile un comando che li elenca o non è possibile farlo?


Non puoi. Le variabili per i plugin devono essere documentate. Non c'è modo di sapere quali variabili vengono utilizzate senza leggere il codice.
Christian Brabandt,

Risposte:


6

Vim non fornisce alcun modo per conoscere tutte le possibili opzioni di plugin.

Come scrittore di plugin posso dirti che è piuttosto complesso in quanto ci sono molti modi diversi di procedere. Ad esempio, riteniamo che se l'utente finale non ha fornito un valore per un'opzione nella sua opzione .vimrc, forziamo questa opzione a esistere e ad essere uguale a un valore predefinito, oppure possiamo dire: "o prendi il valore impostato da l'utente finale o utilizzare un valore predefinito codificato ".

Con questo primo approccio, l'utente finale può visualizzare l'elenco delle opzioni disponibili con un c_CTRL-D, o c_TAB, ecc.

Sempre più plugin scelgono di organizzare tutte le loro opzioni in dizionari. cioè, invece di avere g:plugin_foo_optione g:plugin_bar_option, abbiamo g:plugin.foo_optione g:plugin.bar_option. Questo evita di inquinare l'elenco g:delle opzioni globali, ma perdiamo il completamento automatico della riga di comando (potrei eventualmente aprire un problema dell'argomento, su Vim Github).

Finora ho parlato solo di opzioni globali. La maggior parte dei plugin non prova a supportare opzioni più specifiche anche se avrebbero dovuto farlo. Ad esempio, mi dispiace che né YouCompleteMealternati , né molti altri plug-in, utilizzino opzioni specifiche del progetto anziché opzioni globali. In effetti, a seconda del progetto su cui sto lavorando, voglio impostare le rispettive opzioni su valori diversi. Sfortunatamente, questo non è un flusso di lavoro che hanno preso in considerazione. Nei miei plugin, molte opzioni possono essere specializzate in base al progetto o in base al buffer. Ultimamente ho escogitato un esperimento sull'argomento. Ma anche con la solita e semplice g:plugin_option+ b:plugin_optioncoppia, è quasi impossibile conoscere tutte le opzioni disponibili.

A volte provo a offrire comandi che aiutano a impostare le opzioni come ho fatto con i wrapper build-tools, o anche a visualizzare alcune opzioni nel menu (quando uso gvim), ma è davvero lungi dall'essere perfetto.

Temo che la documentazione sia la migliore cosa disponibile. Puoi anche provare a :h pluginname^D. È probabilmente l'approccio migliore disponibile.


Grande spiegazione delle opzioni dietro le quinte. Ed :h pluginnameè davvero fantastico! Quindi non devo andare via da Vim più volte per leggere la documentazione di diversi plugin.
Iulian Onofrei il

2

Vim non ha un referenziale delle opzioni disponibili. il meglio che puoi fare è vedere cosa è stato inizializzato.

Per le opzioni integrate di Vim c'è il comando :set. Da :h :set:

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

Non vedrai tutte le opzioni disponibili, solo quelle che hai modificato.

È inoltre possibile utilizzare :letper elencare il valore di tutte le variabili dichiarate e :let g:per un elenco delle variabili globali. (Vedi :h E121per un elenco della variabile che puoi mostrare).

Si noti che questi elenchi non sono sempre facili da leggere / analizzare. Per i plug-in, l'opzione migliore è leggere la documentazione e trovare l'opzione di cui hai bisogno.

Potresti anche essere interessato a questo suggerimento Wiki su come visualizzare l'ambiente di VIM


Ho accettato l'altra risposta perché è più dettagliata, anche se questo ha dei comandi interessanti relativi alla mia domanda che potrebbero aiutare.
Iulian Onofrei il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.