Jak wyświetlić listę dostępnych opcji wtyczki?


10

Niedawno odkryłem, że YouCompleteMema g:ycm_autoclose_preview_window_after_insertionopcję, która automatycznie ukrywa okno podglądu dokumentacji po wyjściu z trybu wstawiania, a także niedawno zacząłem używać vima, więc po raz pierwszy ustawiłem tę opcję.

Zastanawiałem się więc, czy inne wtyczki, które wcisnąłem w środowisko vima, mają dostępne opcje, bez ręcznego ich wyszukiwania.

Czy są rejestrowane globalnie, gdy uruchamia się vim, aby polecenie, które je wyświetlało, było dostępne, czy nie można tego zrobić?


Nie możesz Zmienne dla wtyczek muszą być udokumentowane. Nie ma sposobu, aby dowiedzieć się, jakie zmienne są używane bez odczytu kodu.
Christian Brabandt,

Odpowiedzi:


6

Vim nie zapewnia możliwości poznania wszystkich możliwych opcji wtyczek.

Jako autor wtyczek mogę powiedzieć, że jest to dość skomplikowane, ponieważ istnieje wiele różnych sposobów postępowania. Na przykład albo uważamy, że jeśli użytkownik końcowy nie podał wartości opcji, .vimrcwówczas zmuszamy tę opcję do istnienia i równości wartości domyślnej, lub możemy powiedzieć: „albo weź wartość ustawioną przez użytkownik końcowy lub użyj zakodowanej wartości domyślnej ".

Z tym pierwszym podejściu, użytkownik końcowy może wyświetlić listę dostępnych opcji z c_CTRL-D, lub c_TAB, itd.

Coraz więcej wtyczek decyduje się uporządkować wszystkie swoje opcje w słowniki. tzn. zamiast mieć g:plugin_foo_optioni g:plugin_bar_optionmamy g:plugin.foo_optioni g:plugin.bar_option. Pozwala to uniknąć zanieczyszczania listy g:opcji globalnych, ale tracimy autouzupełnianie z wiersza poleceń (mogę w końcu otworzyć kwestię tego tematu na vim github).

Do tej pory mówiłem tylko o opcjach globalnych. Większość wtyczek nie próbuje obsługiwać bardziej szczegółowych opcji, nawet jeśli powinny były to zrobić. Na przykład żałuję, że ani YouCompleteMe, ani alternatywa , ani wiele innych wtyczek nie używa opcji specyficznych dla projektu zamiast opcji globalnych. Rzeczywiście, w zależności od projektu, nad którym pracuję, chcę ustawić odpowiednie opcje na różne wartości. Niestety nie rozważali takiego przepływu pracy. W moich wtyczkach wiele opcji można wyspecjalizować na podstawie projektu lub na podstawie bufora. Ostatnio wymyśliłem eksperyment na ten temat. Ale nawet przy zwykłej i prostej parze g:plugin_option+ b:plugin_option, prawie niemożliwe jest poznanie wszystkich dostępnych opcji.

Czasami próbuję oferować polecenia, które pomagają ustawiać opcje, tak jak zrobiłem to z narzędziami do budowania narzędzi do pakowania, lub nawet wyświetlać niektóre opcje w menu (podczas korzystania z gvim), ale to naprawdę nie jest idealne.

Obawiam się, że dokumentacja jest najlepszą dostępną rzeczą. Możesz nawet spróbować :h pluginname^D. To prawdopodobnie najlepsze dostępne podejście.


Świetne wyjaśnienie opcji za kulisami. I to :h pluginnamejest naprawdę bardzo świetne! Więc nie muszę wielokrotnie odchodzić od vima, aby przeczytać dokumentację różnych wtyczek.
Iulian Onofrei

2

Vim nie ma odniesienia do dostępnych opcji. najlepsze, co możesz zrobić, to zobaczyć, co zostało zainicjowane.

Dla wbudowanych opcji Vima istnieje polecenie :set. Od :h :set:

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

Nie zobaczysz wszystkich dostępnych opcji, tylko te, które zmodyfikowałeś.

Możesz także użyć :letdo wyświetlenia wartości wszystkich zadeklarowanych zmiennych i :let g:do listy zmiennych globalnych. (Zobacz :h E121listę zmiennych, które możesz wyświetlić).

Pamiętaj, że te listy nie zawsze są łatwe do odczytania / parsowania. W przypadku wtyczek najlepszą opcją jest przeczytanie dokumentacji i znalezienie potrzebnej opcji.

Ta wskazówka na wiki może Cię również zainteresować wyświetlaniem środowiska vim


Zaakceptowałem drugą odpowiedź, ponieważ jest bardziej gadatliwa, chociaż zawiera ciekawe polecenia związane z moim pytaniem, które mogą pomóc.
Iulian Onofrei
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.