Ada banyak plugin snippet untuk vim: ultisnips , snipmate , xptemplate , neosnippet , dan banyak lagi.
Mereka semua memiliki pro dan kontra dan lebih atau kurang ketergantungan. Sejauh ini saya telah menggunakan ultisnips tetapi tidak pernah benar-benar puas dengannya.
Karena kami memiliki pertanyaan yang sangat menarik dan lengkap tentang pengelola plugin, saya pikir akan sangat berguna untuk memiliki jenis penjelasan yang sama tentang plugin snippet.
Ada daftar di sini yang bisa menjadi awal yang baik tetapi beberapa jawaban yang lengkap, jelas dan tepat karena komunitas kami dapat menulis akan sangat berguna.
plugin-ultisnips
snippets
statox
sumber
sumber
Jawaban:
Saya telah menggunakan ultisnips selama beberapa minggu sekarang.
Saya pikir kelebihan utama dari plugin ini adalah sebagai berikut:
Pertama-tama ultisnips adalah mesin snippet yang berarti bahwa plugin menyediakan fitur untuk menggunakan snippet tetapi tidak menyediakan snippet itu sendiri. Untuk mendapatkan potongan, penulis merekomendasikan potongan-potongan vim .
Setelah kedua plugin terpasang, Anda dapat menggunakan cuplikan.
Definisi potongan disimpan dalam file bernama pola berikut:
ft.snippets
,,ft_*.snippets
atauft/*
, di manaft
'filetype' dari dokumen saat ini dan*
wildcard seperti shell yang cocok dengan sembarang string termasuk string kosong. (Perhatikan bahwa sintaks tipe file bertitik sukacuda.cpp
didukung.)Dengan cara ini cuplikan khusus untuk tipe file diperluas hanya ketika tipe file buffer diatur. Tipe file khusus
all
tersedia untuk membuat cuplikan diperluas pada semua buffer.Selain snippet yang disediakan oleh vim-snippet, pengguna dapat menentukan snippetnya sendiri. Rekomendasi saya adalah untuk menempatkan mereka di direktori
~/.vim/my-snippets/Ultisnips
dengan cara ini Ultisnips akan menemukannya tanpa konfigurasi tambahan dan mudah untuk mempertahankannya dalam repositori dotfile.Untuk memperluas cuplikan, Ultisnips menyediakan variabel
g:UltiSnipsExpandTrigger
yang mendefinisikan pemetaan yang akan memicu ekspansi (saya memilih **mana yang cukup nyaman bagi saya). Perhatikan bahwa integrasi seharusnya dimungkinkan tetapi saya tidak mengujinya sendiri).Untuk pengguna listrik, Ultisnips juga menyediakan beberapa fungsi untuk menyesuaikan perilaku ekspansi, atau untuk memicunya secara berbeda. Lihat
:h UltiSnips-trigger-functions
Ini adalah manajer cuplikan pertama yang benar-benar saya gunakan secara luas dan saya pikir ini adalah yang baik untuk memulai dengan kesederhanaan di luar kotak dan kemungkinan untuk disetel.
Akhirnya di sini adalah daftar screencasts yang memberikan pengantar yang bagus untuk plugin:
sumber
>
(seperti pada penutup kurung HTML. Fakta itu tidak tahu bahwa pada akhir tag itu mengganggu, karena jika saya mengaktifkan pilihani
kemudian membuatnya jadi memperluas bahkan jika itu di tengah kata yang tidak baikSaya telah menggunakan SnipMate asli sejak saya mulai menggunakan Vim.
Saya tidak perlu mengeluh.
sumber
Berikut adalah daftar fitur dari mu-template . Discl .: Saya pengelolanya.
while
pernyataan kontrol);if (...) {\n}
?if (...)\n{\n}
Sesuatu yang lain??), Dan tentu saja, mereka dapat diperbaiki tergantung pada proyek ini, atau filetype saat ini, atau bahkan keduanya;Lisensi tersebut kompatibel dengan pembuatan kode - itu berarti bahwa sementara kode template-mu di bawah GPLv3, snippet tidak, Anda dapat menggunakannya dalam kode berpemilik: beberapa snippet berada di bawah Lisensi Perangkat Lunak Peningkatan;
Ekspansi terjadi setelah setiap vimrcs lokal yang ada dimuat - untuk mengatur variabel spesifik proyek sebelum ekspansi dilakukan.
Berkat plugin StakeHolders Tom Link, µTemplate telah mengikat placeholder (memodifikasi satu placeholder yang dimodifikasi memodifikasi placeholder lain dengan nama yang sama). Tidak menginstal Stakeholder tidak akan mencegah Anda menggunakan µTemplate.
Sejujurnya, sintaks template sedikit rumit, dan sistem placeholder menjadi milik generasi placeholder pertama - mu-template adalah salah satu mesin template / snippet tertua untuk Vim.
Namun, fakta yang mengizinkan snippet untuk memasukkan snippet lain (secara kondisional, dan dengan parameter) yang mungkin atau mungkin tidak ditimpa cukup penting. Aplikasi tipikal adalah
templat file C ++
Saya memiliki cuplikan kelas umum / penyihir di lh-cpp. Dan beberapa jenis kelas khusus yang menggunakan templat kelas umum ini, tetapi dengan parameter yang berbeda.
sumber
All snippets are defined in their own template-file -- all other snippet engines use one file per filetype and put all snippets in it
apa kelebihan arsitektur ini dibandingkan dengan yang biasa (yaitu satu file dengan tipe file)?internals/class-skeleton
misalnya. Saya lebih suka tidak menyatu dengan cuplikan pernyataan kontrol. Tetapi saya harus mengakui, bahwa memiliki semua pernyataan kontrol bersama tidak akan menjadi masalah. Selain itu, berkat pendekatan ini, saya dapat dengan mudah menimpa cuplikan saya, memperbaruinya dengan cepat, menggunakannya sebagai fungsi, dll.SnipMate dan UltiSnips adalah dua mesin cuplikan paling populer untuk Vim. Keduanya terinspirasi dari sintaks potongan TextMate. UltiSnips dapat menjalankan semua snipMate snippet tetapi juga memiliki sintaks tambahan untuk membuatnya lebih kuat.
Aturan praktis yang baik adalah bahwa jika Vim Anda memiliki dukungan python, maka gunakan UltiSnips. Jika tidak, gunakan SnipMate.
Di saya
.vimrc
, saya memuat (menggunakan Plug) baik plugin tergantung pada ketersediaan python.UltiSnips juga dapat menjalankan kode python di snippet-nya, memungkinkannya melakukan beberapa trik keren. Ini adalah salah satu cuplikan favorit saya yang menggambar kotak di sekitar teks (dari Bagaimana saya dapat membuat catatan dalam kuliah matematika menggunakan LaTeX dan Vim | Gilles Castel )
Dengan cuplikan ini, saya dapat menampilkan sesuatu seperti ini:
sumber