Neovim >= 0.7 (extmarks) jsregexp
untuk lsp-snippet-transformations
(lihat di sini untuk beberapa tips menginstalnya).
Dengan pengelola plugin pilihan Anda yaitu vim-plug, Packer atau malas
pengepak :
use ({
" L3MON4D3/LuaSnip " ,
-- follow latest release.
tag = " v2.* " , -- Replace <CurrentMajor> by the latest released major (first number of latest release)
-- install jsregexp (optional!:).
run = " make install_jsregexp "
})
malas :
{
" L3MON4D3/LuaSnip " ,
-- follow latest release.
version = " v2.* " , -- Replace <CurrentMajor> by the latest released major (first number of latest release)
-- install jsregexp (optional!).
build = " make install_jsregexp "
}
vim-plug :
" follow latest release and install jsregexp.
Plug ' L3MON4D3/LuaSnip ' , { ' tag ' : ' v2.* ' , ' do ' : ' make install_jsregexp ' } " Replace <CurrentMajor> by the latest released major (first number of latest release)
Periksa bagian Releases
di sebelah kanan untuk versi utama terbaru.
LuaSnip menggunakan Versi Semantik (dengan beberapa kelonggaran, patch besar mungkin berakhir sebagai versi Minor)!
Rilisan akan diberi tag sebagai vMajor.Minor.Patch
, kami sarankan untuk mengikuti rilis Major terbaru.
Pertimbangkan untuk menonton rilis repositori sehingga Anda diberi tahu saat versi baru tersedia.
Catatan
Di Windows, Anda perlu menggunakan shell yang dapat menjalankan perintah Unix (MinGW,MSYS2, dll). Untungnya, Git menawarkan sh.exe
, jadi Anda tidak perlu menginstal lingkungan MSYS2 yang berat. Selain Git, Anda juga memerlukan kompiler C dan make
jsregexp
. Anda mungkin juga perlu mengubah perintah build: make install_jsregexp CC=gcc.exe SHELL=C:/path/to/sh.exe .SHELLFLAGS=-c
:
SHELL=C:/path/to/Git/usr/bin/sh.exe # if Git/MinGW/MSYS2 `sh.exe` is not in PATH
.SHELLFLAGS=-c # if Git/MinGW/MSYS2 `sh.exe` is not in PATH
CC=gcc.exe # if CC's default value cc is not set (when `which cc` fails to find the compiler command)
NEOVIM_BIN_PATH=C:/path/to/Neovim/bin # if the Makefile fails to automatically detect the Neovim/bin path
Dalam skrip Vim, dengan <Tab>
untuk melompat maju/memperluas cuplikan, <Shift-Tab>
untuk melompat mundur, dan <Ctrl-E>
untuk mengubah pilihan saat ini ketika berada dalam choiceNode
...
" press <Tab> to expand or jump in a snippet. These can also be mapped separately
" via <Plug>luasnip-expand-snippet and <Plug>luasnip-jump-next.
imap <silent> <expr> <Tab> luasnip#expand_or_jumpable() ? ' <Plug> luasnip-expand-or-jump' : ' <Tab> '
" -1 for jumping backwards.
inoremap <silent> <S-Tab> <cmd> lua require'luasnip'.jump(-1) <Cr>
snoremap <silent> <Tab> <cmd> lua require('luasnip').jump(1) <Cr>
snoremap <silent> <S-Tab> <cmd> lua require('luasnip').jump(-1) <Cr>
" For changing choices in choiceNodes (not strictly necessary for a basic setup).
imap <silent> <expr> <C-E> luasnip#choice_active() ? ' <Plug> luasnip-next-choice' : ' <C-E> '
smap <silent> <expr> <C-E> luasnip#choice_active() ? ' <Plug> luasnip-next-choice' : ' <C-E> '
... atau di Lua, dengan serangkaian kunci yang berbeda: <Ctrl-K>
untuk memperluas, <Ctrl-L>
untuk melompat ke depan, <Ctrl-J>
untuk melompat ke belakang, dan <Ctrl-E>
untuk mengubah aktif pilihan.
local ls = require ( " luasnip " )
vim . keymap . set ({ " i " }, " <C-K> " , function () ls . expand () end , { silent = true })
vim . keymap . set ({ " i " , " s " }, " <C-L> " , function () ls . jump ( 1 ) end , { silent = true })
vim . keymap . set ({ " i " , " s " }, " <C-J> " , function () ls . jump ( - 1 ) end , { silent = true })
vim . keymap . set ({ " i " , " s " }, " <C-E> " , function ()
if ls . choice_active () then
ls . change_choice ( 1 )
end
end , { silent = true })
Wiki nvim-cmp
juga berisi contoh untuk menyiapkan pemetaan seperti tab super.
Lihat dokumen untuk penjelasan umum tentang loader dan manfaatnya. Daftar berikut ini hanya berfungsi sebagai gambaran singkat.
Seperti VS Code : Untuk menggunakan cuplikan gaya VS Code yang ada dari sebuah plugin (misalnya rafamadriz/friendly-snippets) cukup instal plugin lalu tambahkan
require ( " luasnip.loaders.from_vscode " ). lazy_load ()
di suatu tempat di konfigurasi Neovim Anda. LuaSnip kemudian akan memuat cuplikan yang terdapat dalam plugin saat startup. Anda juga dapat dengan mudah memuat cuplikan gaya VSCode khusus Anda sendiri dengan meneruskan jalur ke direktori cuplikan khusus ke fungsi muat:
-- load snippets from path/of/your/nvim/config/my-cool-snippets
require ( " luasnip.loaders.from_vscode " ). lazy_load ({ paths = { " ./my-cool-snippets " } })
Untuk informasi selengkapnya tentang pemuat VS Code, lihat contoh atau dokumentasi.
Seperti SnipMate : Sangat mirip dengan paket VS Code; instal plugin yang menyediakan cuplikan dan panggil fungsi load
:
require ( " luasnip.loaders.from_snipmate " ). lazy_load ()
Format SnipMate sangat sederhana, jadi menambahkan cuplikan khusus hanya memerlukan beberapa langkah:
init.vim
Anda (atau tempat lain di runtimepath
Anda) bernama snippets
.<filetype>.snippets
dan tambahkan cuplikan untuk jenis file tertentu di dalamnya (untuk inspirasi, periksa honza/vim-snippets). # comment
snippet <trigger> <description>
<snippet-body>
snippet if C-style if
if ( $1 )
$0
Sekali lagi, ada beberapa contoh dan dokumentasi.
Lua : Tambahkan cuplikan dengan memanggil require("luasnip").add_snippets(filetype, snippets)
. Contohnya dapat ditemukan di sini.
Hal ini juga dapat dilakukan dengan lebih bersih, dengan semua manfaat yang diperoleh dengan menggunakan loader, dengan menggunakan loader untuk Lua
Ada juga repositori yang mengumpulkan cuplikan untuk berbagai bahasa, molleweide/LuaSnip-snippets.nvim
Anda mempunyai dua pilihan utama: menggunakan cuplikan SnipMate/VS Code (lebih mudah) atau menulis cuplikan di Lua (lebih kompleks namun juga lebih kaya fitur). Berikut beberapa saran untuk memulai dalam kedua kasus tersebut:
DOC.md
. Dari keduanya, SnipMate jelas merupakan cara yang lebih nyaman untuk menulis cuplikan.config
: Penting: region_check_events
untuk melompat ke akhir cuplikan yang kursornya sudah tidak ada lagi, delete_check_events
untuk membersihkan cuplikan yang teksnya telah dihapus, dan enable_autosnippets
untuk mengaktifkan perluasan cuplikan otomatis.extras
: Modul ini berisi banyak fungsi yang membuat penulisan cuplikan menjadi lebih mudah; fmt
dan lambda
sangat berguna.lua-loader
: Cara yang sangat berguna untuk memuat cuplikan, lebih nyaman daripada memanggil add_snippets
.functionNode
, dynamicNode
, choiceNode
dan restoreNode
.Catatan: daripada langsung membaca dokumentasi resmi, Anda mungkin ingin memeriksa bagian Sumber Daya untuk pengguna baru di bawah karena dokumen ini ditulis lebih sebagai panduan referensi daripada tutorial untuk pengguna baru.
DOC.md
adalah dokumentasi utama—memberikan ikhtisar tentang cara menulis cuplikan, menjelaskan peran dan kasus penggunaan setiap node LuaSnip, menunjukkan cara memuat cuplikan dari format Lua, VS Code, dan SnipMate, dan mencakup API LuaSnip yang tersedia .:help luasnip.txt
adalah versi teks biasa dari DOC.md
yang tersedia dengan fitur :help
Neovim.Examples/snippets.lua
berisi banyak contoh cuplikan yang ditulis dalam Lua—kami sangat menyarankan untuk melihat (atau lebih baik lagi, :luafile
ing) contoh cuplikan ini sebelum menggunakan fitur lanjutan LuaSnip.DOC.md
【中文版】DOC dalam bahasa Mandarin telah hadir.
Berikut beberapa video dan tutorial LuaSnip di Web:
ls.add_snippets
, bukan dengan ls.snippets = {}
Terinspirasi oleh vsnip.vim