Lua Academy · Pelajaran

Membungkus Pemalam

Susun dan kongsikannya.

Pelajaran 4 daripada 413 langkah

Membungkus Pemalam ialah pelajaran Lua Academy percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Lua Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.

Susun Atur Direktori Pemalam

Pemalam Neovim hanyalah sebuah direktori dalam runtimepath. Susun atur lazimnya mempunyai folder peringkat teratas yang dikendalikan secara khusus oleh Neovim.

Direktori utama: lua/ untuk modul, plugin/ untuk persediaan yang dimuatkan secara automatik, ftplugin/ untuk skrip jenis fail, doc/ untuk bantuan dan after/ untuk penggantian lewat.

-- myplugin/
--   lua/myplugin/init.lua
--   plugin/myplugin.lua
--   doc/myplugin.txt

Direktori lua/

Fail di bawah lua/ boleh dicapai dengan require. Modul di lua/myplugin/init.lua dimuatkan sebagai require('myplugin').

Penyarangan dipetakan kepada laluan bertitik: lua/myplugin/config.lua menjadi require('myplugin.config'). Beginilah pemalam menyediakan ruang nama awam yang kemas.

-- in lua/myplugin/init.lua
local M = {}
function M.hello() print('hi') end
return M

Memulangkan Jadual Modul

Corak modul lazim mengisytiharkan jadual setempat M, melampirkan fungsi padanya dan memulangkannya. Pemanggil kemudiannya mengakses require('myplugin').hello().

Kekalkan pembantu dalaman sebagai pemboleh ubah setempat biasa supaya hanya antara muka yang dimaksudkan menjadi awam. Ini menyerupai pengkapsulan modul dalam ekosistem lain.

local M = {}
local function private() end
function M.run() private() end
return M

Konvensyen setup()

Kebanyakan pemalam menyediakan fungsi setup(opts). Fungsi ini menggabungkan pilihan pengguna dengan nilai lalai, dengan pilihan pengguna mengatasi nilai lalai, serta melakukan pemulaan seperti mencipta arahan dan arahan automatik.

Gunakan vim.tbl_deep_extend('force', defaults, opts or {}) supaya konfigurasi pengguna yang separa masih menerima semua nilai lalai.

local M = {}
local defaults = { width = 40 }
function M.setup(opts)
  M.config = vim.tbl_deep_extend('force', defaults, opts or {})
end
return M

Direktori Pemalam

Skrip dalam plugin/ berjalan secara automatik apabila Neovim dimulakan, selepas runtimepath dibina. Pastikan skrip ini ringkas.

Tugas lazimnya ialah mendaftarkan arahan atau pengawal supaya modul berat dimuatkan secara tertunda. Elakkan kerja yang mahal di sini; tangguhkannya kepada setup atau arahan automatik supaya permulaan kekal pantas.

-- in plugin/myplugin.lua
if vim.g.loaded_myplugin then return end
vim.g.loaded_myplugin = true

Pengawal Pemuatan

Pengawal pemuatan menghalang pemulaan berganda jika fail dimuatkan dua kali. Tetapkan penanda vim.g.loaded_* dan keluar segera apabila berlaku kemasukan semula.

Ini penting kerana pengurus pemalam dan :runtime boleh memuatkan semula fail, manakala arahan atau arahan automatik yang berganda menyebabkan pepijat yang sukar dikesan.

if vim.g.loaded_myplugin == 1 then return end
vim.g.loaded_myplugin = 1

Pemuatan Tertunda

Permulaan pantas bermaksud kod hanya dimuatkan apabila diperlukan. Daftarkan arahan ringan dalam plugin/ yang memerlukan modul berat apabila digunakan buat kali pertama.

Pengurus pemalam seperti lazy.nvim memformalkan pendekatan ini dengan pencetus cmd, ft dan keys, supaya modul Anda tidak disentuh sehingga dipanggil.

vim.api.nvim_create_user_command('MyStart', function()
  require('myplugin').run()
end, {})

Laluan Masa Jalan dan Laluan Pakej

Neovim menemui pemalam dengan mengimbas runtimepath. Sistem pakej asli memuatkan direktori di bawah pack/*/start/ secara automatik dan pack/*/opt/ apabila diperlukan melalui :packadd.

Kebanyakan pengguna bergantung pada pengurus, tetapi memahami runtimepath menerangkan cara folder Anda ditemui.

print(vim.o.runtimepath:sub(1, 60))
-- :packadd loads an opt plugin manually

Pemeriksaan Kesihatan

Sediakan lua/myplugin/health.lua dengan fungsi check supaya pengguna boleh menjalankan :checkhealth myplugin. Laporkan status dengan API vim.health.

Gunakan vim.health.start, vim.health.ok, vim.health.warn dan vim.health.error untuk memaklumkan kebergantungan yang hilang dengan jelas.

local M = {}
function M.check()
  vim.health.start('myplugin')
  vim.health.ok('all good')
end
return M

Dokumentasi dan Teg

Sertakan fail bantuan doc/myplugin.txt. Jalankan :helptags doc/ (atau biarkan pengurus melakukannya) untuk menjana indeks teg supaya :help myplugin berfungsi.

Dokumentasi yang baik menyenaraikan arahan, pilihan setup dan pemetaan kekunci lalai, supaya pemalam Anda mudah ditemui dari dalam Neovim.

-- generate tags from the doc directory
vim.cmd('helptags ' .. vim.fn.expand('%:p:h'))

Versi dan Penerbitan

Hoskan pemalam dalam repositori git; pengguna memasangnya melalui laluan owner/repo. Tandakan keluaran menggunakan versi semantik supaya pengurus boleh menetapkan versi tertentu.

Sertakan README dengan petikan pemasangan untuk pengurus popular, lesen dan contoh konfigurasi minimum bagi memudahkan pengguna mula menggunakannya.

-- lazy.nvim spec
-- { 'owner/myplugin', config = function()
--     require('myplugin').setup({})
--   end }

Semakan Ringkas

Sahkan pemahaman Anda tentang pembungkusan pemalam.

Ringkasan: Membungkus Pemalam

Pemalam ialah direktori runtimepath yang mengandungi modul lua/, skrip plugin/ yang berjalan secara automatik serta fail pilihan doc/, ftplugin/ dan kesihatan.

Mulangkan jadual modul, sediakan setup yang menggabungkan nilai lalai, cegah pemuatan berganda, muatkan kod berat secara tertunda, dokumentasikan dengan helptags dan terbitkan melalui git menggunakan teg versi semantik.

Percuma untuk bermula

Pelajari Lua dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
40
Pelajaran
159

Soalan Lazim

Adakah pelajaran “Membungkus Pemalam” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Lua Academy, termasuk “Membungkus Pemalam”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Lua Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Membungkus Pemalam”?

Susun dan kongsikannya. Anda berlatih Lua Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Lua Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Lua Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Membungkus Pemalam” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Lua Academy ini?

Ya. Setiap pelajaran Lua Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. API Lua Neovim
  2. Arahan dan Peta Kekunci
  3. Penimbal dan Tetingkap
  4. Membungkus Pemalam
← Kembali ke Lua Academy