Lua Academy · درس

الأوامر وخرائط المفاتيح

أضف إجراءات ظاهرة للمستخدم

الدرس 2 من 413 خطوة

الأوامر وخرائط المفاتيح درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.

نظرة عامة على أوامر المستخدم

أوامر المستخدم هي أوامر النقطتين التي تعرضها إضافتكم، مثل :Format أو :Telescope. ويجب أن تبدأ بحرف كبير.

تعرّفها nvim_create_user_command في Lua، مع تمرير اسم واستدعاء أو سلسلة وجدول خيارات. وهذا يحل محل :command في Vimscript.

vim.api.nvim_create_user_command('Hello', function()
  print('Hello from my plugin')
end, {})

وسائط الأوامر

اضبطوا nargs لقبول الوسائط: '0' أو '1' أو '*' أو '?' أو '+'. وتتلقى دالة الاستدعاء جدول opts الذي يحتوي على args وfargs وbang.

إن fargs هي قائمة الوسائط بعد تقسيمها مسبقًا على المسافات البيضاء، وهو ما تحتاجونه عادةً.

vim.api.nvim_create_user_command('Greet', function(opts)
  print('Hi ' .. opts.args)
end, { nargs = 1 })

أوامر النطاق وBang

مرّروا range = true لقبول نطاقات الأسطر؛ ثم تقرأ دالة الاستدعاء opts.line1 وopts.line2. أضيفوا bang = true للسماح بـ :Cmd!، مع اكتشافه عبر opts.bang.

تتيح هذه العلامات للأمر نفسه أن يتصرف بطريقة مختلفة مع التحديدات المرئية أو الصيغ المفروضة.

vim.api.nvim_create_user_command('Sum', function(o)
  print(o.line1 .. ' to ' .. o.line2)
end, { range = true })

إكمال الأوامر

وفّروا الإكمال بالضغط على Tab باستخدام الخيار complete. استخدموا القيم المضمنة مثل 'file' أو 'buffer'، أو دالة Lua مخصصة.

تتلقى دالة الإكمال المخصصة الوسيطة الجزئية وسطر الأوامر، ثم تُعيد قائمة من السلاسل المرشحة.

vim.api.nvim_create_user_command('Pick', function(o) print(o.args) end, {
  nargs = 1,
  complete = function() return { 'red', 'green', 'blue' } end,
})

أوامر محلية للمخزن المؤقت

لتقييد أمر بمخزن مؤقت واحد، استخدموا nvim_buf_create_user_command مع مقبض المخزن المؤقت. وهذا شائع في إضافات أنواع الملفات.

فمثلًا، قد تعرّف إضافة Markdown الأمر :Preview داخل مخازن Markdown فقط، مع إبقاء مساحة الأسماء العامة نظيفة.

vim.api.nvim_buf_create_user_command(0, 'Preview', function()
  print('previewing this buffer')
end, {})

التعريف بـ vim.keymap.set

تُعد vim.keymap.set واجهة API الحديثة لتعيينات المفاتيح. وهي تأخذ وضعًا، والمفاتيح الموجودة على الجانب الأيسر، وسلسلة أو دالة Lua على الجانب الأيمن، وجدول خيارات.

وعلى خلاف nvim_set_keymap القديمة، تقبل دالة Lua مباشرةً في الجانب الأيمن، ولا تحتاج إلى تغليفها بـ <cmd>lua.

vim.keymap.set('n', '<leader>w', function()
  vim.cmd('write')
end, { desc = 'Save file' })

الأوضاع وتعيينات متعددة

يمكن أن تكون وسيطة الوضع سلسلة واحدة مثل 'n'، أو جدولًا مثل { 'n', 'v' } لتعيين عدة أوضاع دفعة واحدة.

الأوضاع الشائعة: n العادي، وi الإدراج، وv المرئي، وx المرئي فقط، وt الطرفية. وتعني السلسلة الفارغة '' الأوضاع العادي والمرئي وانتظار المشغّل.

vim.keymap.set({ 'n', 'v' }, '<leader>y', '"+y', { desc = 'Yank to clipboard' })

خيارات تعيينات المفاتيح

يتحكم جدول opts في السلوك. إذ تمنع silent = true عرض صدى الأمر، وتكون noremap مضبوطة على true افتراضيًا لأسباب تتعلق بالسلامة، بينما يقيّد buffer = 0 التعيين بالمخزن المؤقت الحالي.

أضيفوا دائمًا desc حتى يظل خرج which-key و:map سهل القراءة.

vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {
  buffer = 0, silent = true, desc = 'Go to definition',
})

تعيينات تعبيرية

عند استخدام expr = true، تُعيد دالة الجانب الأيمن المفاتيح التي ينبغي تمريرها. وهذا يتيح تعيينات ذكية، مثل جعل <Tab> يتصرف بطريقة مختلفة عندما تكون قائمة الإكمال ظاهرة.

أعيدوا سلسلة فارغة لعدم تنفيذ أي شيء، أو أعيدوا المفاتيح الحرفية المطلوب إدراجها.

vim.keymap.set('i', '<Tab>', function()
  return vim.fn.pumvisible() == 1 and '<C-n>' or '<Tab>'
end, { expr = true })

حذف تعيينات المفاتيح

أزيلوا تعيينًا باستخدام vim.keymap.del، مع تمرير الوضع والمفاتيح نفسيهما، بالإضافة إلى حقل buffer إذا كان التعيين محليًا للمخزن المؤقت.

يفيد ذلك في إجراءات التنظيف أو عندما تعطل إضافة ميزةً وتحتاج إلى استعادة ارتباطات المستخدم الأصلية.

vim.keymap.del('n', '<leader>w')
vim.keymap.del('n', 'gd', { buffer = 0 })

الأوامر وتعيينات المفاتيح معًا

من الأنماط النظيفة تعريف المنطق مرة واحدة، وعرضه كأمر مستخدم، وربط مفتاح يستدعي ذلك الأمر. وبذلك تحافظون على مصدر واحد للحقيقة.

يؤدي الربط إلى <cmd>Hello<cr> إلى تجنب مغادرة الوضع المرئي، ويكون أكثر قابلية للتنبؤ من :Hello<cr>.

vim.api.nvim_create_user_command('Toggle', function() end, {})
vim.keymap.set('n', '<leader>t', '<cmd>Toggle<cr>', { desc = 'Toggle' })

اختبار سريع

تحققوا من مدى إلمامكم بالأوامر وتعيينات المفاتيح.

خلاصة: الأوامر وتعيينات المفاتيح

يمكنكم الآن إنشاء الأوامر باستخدام nvim_create_user_command، والتحكم فيها عبر nargs وrange وbang وcomplete، وتقييدها حسب المخزن المؤقت.

وبالنسبة إلى التعيينات، تقبل vim.keymap.set دوال Lua للاستدعاء، وأوضاعًا متعددة، وخيارات مثل desc وsilent وbuffer وexpr، مع استخدام vim.keymap.del للتنظيف.

البدء مجانًا

تعلم Lua مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
40
الدروس
159

الأسئلة الشائعة

هل درس «الأوامر وخرائط المفاتيح» مجاني؟

نعم — نص درس «الأوامر وخرائط المفاتيح» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.

ماذا ستتعلم في «الأوامر وخرائط المفاتيح»؟

أضف إجراءات ظاهرة للمستخدم تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟

لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الأوامر وخرائط المفاتيح»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟

نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. واجهة Lua البرمجية في Neovim
  2. الأوامر وخرائط المفاتيح
  3. المخازن والنوافذ
  4. تجهيز إضافة
← العودة إلى Lua Academy