Bagaimana cara mendaftar opsi plugin yang tersedia?

10

Saya baru-baru ini menemukan bahwa YouCompleteMememiliki g:ycm_autoclose_preview_window_after_insertionopsi yang secara otomatis menyembunyikan jendela pratinjau dokumentasi setelah keluar dari mode penyisipan, dan saya juga baru-baru ini mulai menggunakan vim, jadi ini adalah pertama kalinya saya mengatur opsi.

Jadi saya bertanya-tanya apakah plugin lain yang saya isi di lingkungan vim saya memiliki opsi yang tersedia, tanpa mencari secara manual.

Apakah mereka terdaftar secara global ketika vim dimulai, agar perintah yang mencantumkannya tersedia, atau ini tidak dapat dilakukan?

Iulian Onofrei
sumber
Kamu tidak bisa Variabel untuk plugin perlu didokumentasikan. Tidak ada cara untuk mengetahui, variabel apa yang digunakan tanpa membaca kode.
Christian Brabandt

Jawaban:

6

Vim tidak menyediakan cara untuk mengetahui semua opsi plugin yang memungkinkan.

Sebagai penulis plugin saya dapat memberitahu Anda ini cukup rumit karena ada banyak cara untuk melanjutkan. Misalnya, kami menganggap bahwa jika pengguna akhir tidak memberikan nilai untuk opsi di dalamnya, .vimrcmaka kami memaksakan opsi ini ada dan sama dengan nilai default, atau kita dapat mengatakan: "ambil nilai yang ditetapkan oleh pengguna akhir, atau gunakan nilai default kode keras ".

Dengan pendekatan pertama itu, pengguna akhir dapat melihat daftar opsi yang tersedia dengan a c_CTRL-D, atau c_TAB, dll.

Semakin banyak plugin memilih untuk mengatur semua opsi mereka ke dalam kamus. yaitu, alih-alih memiliki g:plugin_foo_optiondan g:plugin_bar_option, kita memiliki g:plugin.foo_optiondan g:plugin.bar_option. Ini menghindari mencemari daftar g:opsi global, tetapi kami kehilangan pelengkapan otomatis baris perintah (saya akhirnya dapat membuka masalah subjek, di vim github).

Sejauh ini saya hanya berbicara tentang opsi global. Sebagian besar plugin tidak mencoba untuk mendukung opsi yang lebih spesifik bahkan jika mereka seharusnya melakukannya. Sebagai contoh, saya menyesal bahwa YouCompleteMe atau alternatif , atau banyak plugin lainnya, tidak menggunakan opsi spesifik proyek alih-alih opsi global. Memang, tergantung pada proyek yang saya kerjakan saya ingin mengatur opsi masing-masing ke nilai yang berbeda. Sayangnya, ini bukan alur kerja yang mereka pertimbangkan. Dalam plugin saya, banyak opsi dapat dikhususkan pada basis proyek, atau berdasarkan buffer. Akhir-akhir ini saya datang dengan percobaan pada subjek. Tetapi bahkan dengan pasangan g:plugin_option+ yang biasa dan sederhana b:plugin_option, hampir tidak mungkin mengetahui semua opsi yang tersedia.

Kadang-kadang saya mencoba untuk menawarkan perintah yang membantu pengaturan opsi seperti yang saya lakukan dengan build-tools-wrappers, atau bahkan untuk menampilkan beberapa opsi di menu (ketika menggunakan gvim), tetapi itu benar-benar jauh dari sempurna.

Saya khawatir dokumentasinya adalah yang terbaik. Anda bahkan dapat mencoba :h pluginname^D. Ini mungkin pendekatan terbaik yang tersedia.

Luc Hermitte
sumber
Penjelasan bagus tentang opsi di balik layar. Dan :h pluginnameini sebenarnya sangat bagus! Jadi saya tidak harus pergi dari vim beberapa kali untuk membaca dokumentasi plugin yang berbeda.
Iulian Onofrei
2

Vim tidak memiliki referensi opsi yang tersedia. yang terbaik yang dapat Anda lakukan adalah melihat apa yang telah diinisialisasi.

Untuk opsi bawaan Vim ada perintah :set. Dari :h :set:

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

Anda tidak akan melihat semua opsi yang tersedia, hanya yang Anda modifikasi.

Anda juga dapat menggunakan :letuntuk membuat daftar nilai semua variabel yang dideklarasikan dan :let g:untuk daftar variabel global. (Lihat :h E121daftar variabel yang dapat Anda tampilkan).

Perhatikan bahwa daftar ini tidak selalu mudah dibaca / diurai. Untuk plugin, opsi terbaik Anda adalah membaca dokumentasi dan menemukan opsi yang Anda butuhkan.

Anda juga mungkin tertarik dengan tip wikia ini bagaimana menampilkan lingkungan vim

statox
sumber
Menerima jawaban lain karena lebih verbose, meskipun ini memiliki perintah menarik yang terkait dengan pertanyaan saya yang mungkin bisa membantu.
Iulian Onofrei