Apa yang harus diikuti untuk membuat plugin vim?

11

Jadi pertanyaan saya sederhana. Apakah ide yang baik untuk belajar vim scripting hanya untuk membuat vim atau kita harus mengadopsi beberapa bahasa lain yang lebih diterima untuk itu.

Misalnya Tautan ini membuka video YouTube yang menunjukkan Cara menggunakan Python untuk membuat plugin vim.

Skrip Vim tidak sepenuhnya berguna kecuali seseorang bermaksud membuat beberapa plugin vim. Jadi apakah ada hal tertentu yang tidak dapat dilakukan kecuali skrip vim hanya digunakan?

Mayukh Sarkar
sumber
2
Perhatikan bahwa banyak orang menggunakan vimscript untuk mengkonfigurasi (sangat teliti) Vim mereka, tanpa membuat atau mendistribusikan plugin apa pun.
VanLaser

Jawaban:

12

Plugin saya 99% di VimL. Alasannya adalah bahwa VimL tersedia di mana vim diinstal. Ini jauh lebih rumit dengan bahasa lain - misalnya, sangat jarang saya menginstal Python di kotak jendela tempat saya menggunakan Vim.

Tentu saja VimL rumit, kehilangan banyak fitur keren, tetapi setidaknya, lebih mudah untuk memiliki sesuatu yang portabel.

1% tidak dalam VimL adalah ketika saya perlu berinteraksi dengan API eksternal yang menawarkan binding python.

BTW, hampir semua yang Anda pelajari tentang VimL dapat digunakan secara interaktif saat Anda bermain dengan perintah seperti :substitute. Kebanyakan pemetaan atau makro tidak membutuhkan python juga.

Luc Hermitte
sumber
1
Saya sebenarnya tidak menemukan VIML yang rumit. Tentu saja, saya setuju tidak memiliki fitur keren dan fungsi bahasa tingkat tinggi seperti python, tetapi setelah bekerja dengannya selama beberapa waktu, saya merasa VIML cukup menyenangkan untuk dikerjakan. Saya pikir reputasi VIML lebih buruk dari yang seharusnya.
Karl Yngve Lervåg
Baik. Saya harus mengakui bahwa banyak kemajuan telah dibuat sejak vim5.x (ketika saya mulai menggunakannya). Tetapi masih ada kasus sudut di mana kita harus melakukan hal-hal yang kompleks. Lihat misalnya map()yang mengharapkan string atau (yang tidak terkait) :map. Saya sering harus bermain dengan / sekitar evaluasi string untuk sampai ke ujung saya seperti menghasilkan pemetaan atau memproses daftar panggilan fungsi, ...
Luc Hermitte
Menulis plugin vim dalam bahasa lain tidak membebaskan Anda dari belajar VIML, karena binding ke python / ruby ​​/ etc. cukup terbatas dan akhirnya Anda mendapatkan execpotongan VIML. Ini memungkinkan Anda menulis logika inti Anda dalam bahasa yang Anda mungkin bisa bekerja jauh lebih efisien, tetapi Anda masih perlu belajar VimL.
hobbs
12

Jika Anda berniat menulis plugin, Anda harus membaca artikel yang bagus "Writing Vim Plugins", oleh Steve Losh ; tidak hanya untuk memutuskan apakah Anda akan tetap dengan VIML atau tidak, tetapi untuk saran praktik terbaik.

Ini juga berisi diskusi kecil tentang Scripting Vim dengan Bahasa Lainnya :

Pertama, menggunakan bahasa lain akan mengharuskan pengguna plugin Anda untuk menggunakan versi Vim yang dikompilasi dengan dukungan untuk versi itu. Di zaman sekarang ini biasanya bukan masalah, tetapi jika Anda ingin plugin Anda berjalan di mana-mana maka itu bukan pilihan.

Menggunakan bahasa lain menambah overhead. Anda tidak hanya perlu mempelajari Vimscript tetapi juga antarmuka antara Vim dan bahasa. Untuk plugin kecil ini dapat menambah lebih banyak kerumitan proyek daripada menghemat, tetapi untuk plugin yang lebih besar dapat membayar sendiri. Terserah Anda untuk memutuskan apakah itu layak.

Akhirnya, menggunakan bahasa lain tidak sepenuhnya melindungi Anda dari keeksentrikan Vimscript. Anda masih perlu belajar bagaimana melakukan sebagian besar hal dalam Vimscript - menggunakan bahasa lain hanya memungkinkan Anda menyelesaikan sebagian besar dari ini dengan lebih rapi daripada yang seharusnya.

Pengalaman saya adalah bahwa bahkan ketika plugin non-VimL lebih baik, saya akhirnya beralih ke alternatif VimL murni nanti, terutama karena portabilitas. Vim berjalan di hampir semua sistem (bahkan sistem lama dan jelek), dan overhead pengaturan dependensi atau menonaktifkan sementara plugin itu tidak layak (terutama jika Anda terus lupa bahwa Anda menonaktifkannya dan mencoba menggunakan pemetaan / perintahnya) .

Bahkan ketika lebih mudah untuk mengatur dependensi Anda dapat menemukan beberapa masalah (misalnya: beberapa plugin berbasis python tidak berfungsi 100% ketika mereka bersumber dari folder bersama di Mesin Virtual). Itu sebabnya beberapa plugin yang saya tulis hanya menggunakan VIML.

mMontu
sumber