Neovim >= 0.7 (علامات خارجية) jsregexp
lsp-snippet-transformations
(انظر هنا للحصول على بعض النصائح حول تثبيته).
باستخدام مدير المكونات الإضافية المفضل لديك، مثل vim-plug أو Packer أو Lazy
باكر :
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 "
})
كسول :
{
" 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 "
}
المكونات الحيوية :
" 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)
تحقق من قسم Releases
الموجود على اليمين للحصول على أحدث إصدار رئيسي.
يستخدم LuaSnip الإصدار الدلالي (مع بعض الفسحة، قد تنتهي التصحيحات الكبيرة كإصدار ثانوي)!
سيتم وضع علامة على الإصدارات على أنها vMajor.Minor.Patch
، ونحن نوصي بمتابعة أحدث إصدار رئيسي.
فكر في مشاهدة إصدارات المستودع حتى يتم إعلامك عند توفر إصدار جديد.
ملحوظة
في نظام التشغيل Windows، تحتاج إلى استخدام shell الذي يمكنه تشغيل أوامر Unix (MinGW،MSYS2، إلخ). لحسن الحظ، يقدم Git ملف sh.exe
، لذلك لا تحتاج إلى تثبيت بيئة MSYS2 ثقيلة. بخلاف Git، تحتاج أيضًا إلى مترجم C make
jsregexp
. قد تحتاج أيضًا إلى تغيير أمر الإنشاء: 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
في برنامج Vim النصي، باستخدام <Tab>
للانتقال إلى الأمام/توسيع المقتطف، <Shift-Tab>
للانتقال إلى الخلف، و <Ctrl-E>
لتغيير الاختيار الحالي عندما تكون في 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> '
... أو في Lua، باستخدام مجموعة مختلفة من المفاتيح: <Ctrl-K>
للتوسيع، <Ctrl-L>
للقفز للأمام، <Ctrl-J>
للقفز للخلف، و <Ctrl-E>
لتغيير النشط خيار.
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 })
يحتوي موقع nvim-cmp
أيضًا على مثال لإعداد رسم خرائط يشبه علامة التبويب الفائقة.
راجع المستند للحصول على شرح عام للوادر وفوائدها. القائمة التالية بمثابة نظرة عامة قصيرة فقط.
VS Code-like : لاستخدام مقتطفات نمط VS Code الموجودة من مكون إضافي (على سبيل المثال، rafamadriz/Friendly-snippets)، ما عليك سوى تثبيت المكون الإضافي ثم إضافته
require ( " luasnip.loaders.from_vscode " ). lazy_load ()
في مكان ما في تكوين Neovim الخاص بك. سيقوم LuaSnip بعد ذلك بتحميل المقتطفات الموجودة في البرنامج المساعد عند بدء التشغيل. يمكنك أيضًا بسهولة تحميل مقتطفات نمط VSCode المخصصة الخاصة بك عن طريق تمرير المسار إلى دليل المقتطف المخصص إلى وظيفة التحميل:
-- load snippets from path/of/your/nvim/config/my-cool-snippets
require ( " luasnip.loaders.from_vscode " ). lazy_load ({ paths = { " ./my-cool-snippets " } })
لمزيد من المعلومات حول أداة تحميل VS Code، راجع الأمثلة أو الوثائق.
يشبه SnipMate : يشبه إلى حد كبير حزم VS Code؛ قم بتثبيت مكون إضافي يوفر مقتطفات واستدعاء وظيفة load
:
require ( " luasnip.loaders.from_snipmate " ). lazy_load ()
يعد تنسيق SnipMate بسيطًا جدًا، لذا فإن إضافة مقتطفات مخصصة لا تتطلب سوى بضع خطوات:
init.vim
الخاص بك (أو أي مكان آخر في runtimepath
الخاص بك) يسمى snippets
.<filetype>.snippets
وأضف مقتطفات لنوع الملف المحدد فيه (للإلهام، تحقق من honza/vim-snippets). # comment
snippet <trigger> <description>
<snippet-body>
snippet if C-style if
if ( $1 )
$0
مرة أخرى، هناك بعض الأمثلة والوثائق.
Lua : أضف المقتطفات عن طريق استدعاء require("luasnip").add_snippets(filetype, snippets)
. مثال على ذلك يمكن العثور عليه هنا.
ويمكن أيضًا القيام بذلك بطريقة أكثر نظافة، مع كل المزايا التي تأتي مع استخدام المُحمل، وذلك باستخدام المُحمل الخاص بـ Lua
يوجد أيضًا مستودع يجمع المقتطفات للغات المختلفة، molleweide/LuaSnip-snippets.nvim
لديك خياران رئيسيان: استخدام مقتطفات التعليمات البرمجية SnipMate/VS (أسهل) أو كتابة المقتطفات في Lua (أكثر تعقيدًا ولكن أيضًا أكثر ثراءً بالميزات). فيما يلي بعض الاقتراحات للبدء في كلتا الحالتين:
DOC.md
. من بين هذين الاثنين، يعد SnipMate بالتأكيد الطريقة الأكثر راحة لكتابة المقتطفات.config
: ملحوظ: region_check_events
للانتقال إلى نهاية المقتطفات التي لم يعد المؤشر بداخلها، delete_check_events
لتنظيف المقتطفات التي تم حذف نصها، و enable_autosnippets
لتمكين توسيع المقتطف التلقائي.extras
: تحتوي هذه الوحدة على العديد من الوظائف التي تجعل كتابة المقتطفات أسهل بكثير؛ fmt
و lambda
مفيدة بشكل خاص.lua-loader
: طريقة مفيدة جدًا لتحميل المقتطفات، وهي أكثر راحة من استدعاء add_snippets
.functionNode
و dynamicNode
و choiceNode
و restoreNode
.ملاحظة: بدلاً من قراءة الوثائق الرسمية فورًا، قد ترغب في مراجعة قسم الموارد للمستخدمين الجدد أدناه نظرًا لأن المستندات مكتوبة كدليل مرجعي أكثر من كونها برنامجًا تعليميًا للمستخدمين الجدد.
DOC.md
هو الوثائق الرئيسية — فهو يقدم نظرة عامة على كيفية كتابة المقتطفات، ويشرح دور كل عقدة من عقد LuaSnip وحالة استخدامها، ويوضح كيفية تحميل المقتطفات من تنسيقات Lua وVS Code وSnipMate، ويغطي واجهة برمجة التطبيقات LuaSnip المتاحة .:help luasnip.txt
هو إصدار نص عادي من DOC.md
متوفر مع ميزة :help
الخاصة بـ Neovim.Examples/snippets.lua
على العديد من أمثلة المقتطفات المكتوبة بلغة Lua — نوصي بشدة بالبحث في (أو الأفضل من ذلك، :luafile
ing) عن مقتطفات الأمثلة هذه قبل استخدام ميزات LuaSnip المتقدمة.DOC.md
أيضًا.【中文版】DOC باللغة الصينية هنا.
فيما يلي بعض مقاطع الفيديو والبرامج التعليمية الخاصة بـ LuaSnip على الويب:
ls.add_snippets
بدلاً من ls.snippets = {}
مستوحاة من vsnip.vim