0Pricing
Lua Academy · Pelajaran

API Lua Neovim

Pahami cara plugin terhubung.

API Lua Neovim adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.

Mengapa Lua di Neovim

Neovim menyertakan lingkungan LuaJIT, sehingga Lua menjadi bahasa skrip bawaan di samping Vimscript. Pembuat plugin memilih Lua karena kecepatannya, struktur datanya yang nyata, dan sistem modulnya yang rapi.

Tabel global vim adalah gerbang menuju semuanya: keadaan editor, API, opsi, dan fungsi pembantu dari pustaka standar. Menguasainya merupakan landasan pengembangan plugin modern.

print(vim.inspect(vim.version()))

Lapisan vim.api

vim.api menyediakan API jarak jauh tingkat rendah: setiap fungsi yang diawali dengan nvim_. Ini adalah panggilan yang sama seperti yang digunakan klien eksternal melalui RPC, tetapi karena berjalan di dalam proses, panggilan tersebut berlangsung seketika.

Fungsi seperti nvim_get_current_buf, nvim_buf_set_lines, dan nvim_command memberikan kendali yang presisi. Fungsi-fungsi ini stabil, terdokumentasi dengan baik, dan menjadi tulang punggung plugin yang serius.

local buf = vim.api.nvim_get_current_buf()
local name = vim.api.nvim_buf_get_name(buf)
print(name)

vim.fn — Memanggil Fungsi Vimscript

vim.fn menjembatani fungsi bawaan Vimscript. Apa pun yang dapat dipanggil di Vimscript, seperti expand() atau fnamemodify(), dapat diakses sebagai vim.fn.expand(...).

Hal ini sangat berguna ketika belum tersedia API bawaan. Argumen dan nilai kembalian secara otomatis dikonversi antara tipe Lua dan Vimscript.

local path = vim.fn.expand('%:p')
local tail = vim.fn.fnamemodify(path, ':t')
print(tail)

Opsi: vim.o, vim.bo, vim.wo

Opsi diatur melalui metatabel. vim.o menargetkan opsi global, vim.bo opsi khusus buffer, dan vim.wo opsi khusus jendela.

Penetapannya semudah menulis sebuah bidang. Cara ini menggantikan pemanggilan nvim_set_option yang panjang dan lebih mudah dibaca dalam kode konfigurasi.

vim.o.number = true
vim.bo.shiftwidth = 2
vim.wo.wrap = false

vim.g dan Variabel Global

vim.g membaca dan menulis variabel global Vim. Plugin biasanya menyediakan pengalih konfigurasi di sini, seperti vim.g.myplugin_enabled.

Membaca variabel yang belum diatur akan mengembalikan nil, jadi lindungi pembacaan dengan nilai bawaan. Varian khusus buffer dan jendela tersedia sebagai vim.b dan vim.w.

vim.g.mapleader = ' '
local enabled = vim.g.myplugin_enabled or false
print(enabled)

Notifikasi dan Gema

Gunakan vim.notify untuk menampilkan pesan kepada pengguna. Fungsi ini menerima string pesan dan tingkat log opsional dari vim.log.levels.

Pengelola plugin seperti noice atau notify dapat mengambil alih pesan ini untuk menyediakan UI yang lebih baik. Untuk keluaran yang ditujukan kepada pengguna, utamakan vim.notify daripada print mentah.

vim.notify('Plugin loaded', vim.log.levels.INFO)
vim.notify('Missing config', vim.log.levels.WARN)

Penjadwalan dengan vim.schedule

Beberapa pemanggilan API tidak diizinkan dalam konteks peristiwa cepat, misalnya di dalam callback tertentu. vim.schedule menunda sebuah fungsi hingga putaran utama, tempat seluruh API aman digunakan.

Hal ini mencegah kesalahan menakutkan "E5560" saat buffer diubah dari konteks asinkron atau perintah otomatis.

vim.schedule(function()
  vim.api.nvim_buf_set_lines(0, 0, 0, false, {'Hello'})
end)

Perintah Otomatis di Lua

nvim_create_autocmd mendaftarkan penangan peristiwa. Kelompokkan perintah tersebut dengan nvim_create_augroup dan atur clear = true untuk menghindari duplikasi saat dimuat ulang.

Callback menerima tabel peristiwa dengan bidang seperti buf dan match, sehingga penangan Anda mendapatkan konteks yang presisi.

local grp = vim.api.nvim_create_augroup('MyGrp', { clear = true })
vim.api.nvim_create_autocmd('BufWritePost', {
  group = grp,
  pattern = '*.lua',
  callback = function(ev) print('saved ' .. ev.file) end,
})

vim.tbl dan Pembantu String

Neovim menyediakan pustaka standar yang lengkap. vim.tbl_extend, vim.tbl_keys, dan vim.split mencakup operasi umum pada tabel dan string.

vim.tbl_deep_extend('force', defaults, opts) adalah cara standar untuk menggabungkan konfigurasi pengguna di atas nilai bawaan plugin.

local defaults = { width = 40, border = 'single' }
local opts = { width = 60 }
local cfg = vim.tbl_deep_extend('force', defaults, opts)
print(cfg.width, cfg.border)

vim.inspect untuk Penelusuran Kesalahan

vim.inspect menserialisasi nilai Lua apa pun menjadi string yang mudah dibaca, termasuk tabel bertingkat. Inilah cara tercepat untuk memahami bentuk nilai kembalian API.

Gunakan bersama :lua print(vim.inspect(...)) atau :lua= expr di Neovim versi terbaru untuk melakukan pemeriksaan cepat selama pengembangan.

local info = vim.api.nvim_get_mode()
print(vim.inspect(info))

Perbandingan API dan Vimscript

Utamakan vim.api untuk operasi yang stabil dan terstruktur. Gunakan vim.fn atau vim.cmd sebagai pilihan cadangan jika tidak ada fungsi bawaan.

vim.cmd menjalankan perintah ex sebagai string dan berguna untuk kebutuhan sekali pakai seperti vim.cmd('highlight ...'), tetapi hasilnya lebih sulit diperiksa daripada pemanggilan API bertipe.

vim.cmd('syntax on')
vim.cmd.colorscheme('habamax')

Pemeriksaan Singkat

Uji pemahaman Anda tentang API Lua Neovim.

Rangkuman: API Lua

Sekarang Anda mengetahui lapisan inti: vim.api untuk API asli bertipe, vim.fn untuk fungsi Vimscript, dan vim.cmd untuk perintah ex.

Opsi mengalir melalui vim.o/bo/wo, variabel melalui vim.g/b/w, dan pembantu seperti vim.tbl_deep_extend, vim.notify, serta vim.schedule melengkapi perangkat kerja pembuat plugin.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “API Lua Neovim” gratis?

Ya — teks lengkap “API Lua Neovim” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “API Lua Neovim”?

Pahami cara plugin terhubung. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Lua Academy?

Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “API Lua Neovim” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?

Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. API Lua Neovim
  2. Perintah dan Pemetaan Tombol
  3. Buffer dan Jendela
  4. Mengemas Plugin
← Kembali ke Lua Academy