Neovimin Lua-API
Miten liitännäiset kytkeytyvät mukaan.
Neovimin Lua-API on ilmainen Lua Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Lua Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Lua Academy-kurssilla on yhteensä 4 oppituntia.
Miksi Lua Neovimissa
Neovim sisältää LuaJIT-ajoaikaympäristön, joten Lua on Vimscriptin rinnalla sen natiivi skriptauskieli. Liitännäisten tekijät suosivat Luaa sen nopeuden, aitojen tietorakenteiden ja selkeän moduulijärjestelmän ansiosta.
Globaali vim-taulukko on väylä kaikkeen: editorin tilaan, APIin, asetuksiin ja vakiokirjaston apufunktioihin. Sen hallitseminen on nykyaikaisen liitännäiskehityksen perusta.
print(vim.inspect(vim.version()))vim.api-kerros
vim.api tarjoaa matalan tason etä-API:n: kaikki funktiot, joiden etuliite on nvim_. Nämä ovat samoja kutsuja, joita ulkoiset asiakkaat käyttävät RPC:n kautta, mutta saman prosessin sisällä ne suoritetaan välittömästi.
Funktiot, kuten nvim_get_current_buf, nvim_buf_set_lines ja nvim_command, tarjoavat tarkan hallinnan. Ne ovat vakaita ja hyvin dokumentoituja sekä vakavien liitännäisten perusta.
local buf = vim.api.nvim_get_current_buf()
local name = vim.api.nvim_buf_get_name(buf)
print(name)vim.fn — Vimscript-funktioiden kutsuminen
vim.fn toimii siltana Vimscriptin sisäisiin funktioihin. Kaikki Vimscriptissä kutsuttavat funktiot, kuten expand() tai fnamemodify(), ovat käytettävissä muodossa vim.fn.expand(...).
Tämä on erittäin hyödyllistä, kun natiivia API-funktiota ei vielä ole. Argumentit ja palautusarvot muunnetaan automaattisesti Luan ja Vimscriptin tyyppien välillä.
local path = vim.fn.expand('%:p')
local tail = vim.fn.fnamemodify(path, ':t')
print(tail)Asetukset: vim.o, vim.bo, vim.wo
Asetukset määritetään metataulukoiden kautta. vim.o kohdistuu yleisiin asetuksiin, vim.bo puskurikohtaisiin asetuksiin ja vim.wo ikkunakohtaisiin asetuksiin.
Arvon määrittäminen on yhtä helppoa kuin kentän kirjoittaminen. Tämä korvaa monisanaiset nvim_set_option-kutsut ja tekee määrityskoodista luontevamman lukea.
vim.o.number = true
vim.bo.shiftwidth = 2
vim.wo.wrap = falsevim.g ja globaalit muuttujat
vim.g lukee ja kirjoittaa globaaleja Vim-muuttujia. Liitännäiset tarjoavat täällä usein määrityksen käyttöönottavia ja käytöstä poistavia asetuksia, kuten vim.g.myplugin_enabled.
Määrittämättömän muuttujan lukeminen palauttaa arvon nil, joten käyttäkää oletusarvoja varmistuksena. Puskuri- ja ikkunakohtaiset vastineet ovat vim.b ja vim.w.
vim.g.mapleader = ' '
local enabled = vim.g.myplugin_enabled or false
print(enabled)Ilmoitukset ja viestit
Käyttäkää vim.notify-funktiota viestien näyttämiseen käyttäjälle. Se ottaa vastaan viestimerkkijonon ja valinnaisen lokitason kohteesta vim.log.levels.
Liitännäisten hallintaohjelmat, kuten noice tai notify, voivat ottaa nämä viestit vastaan ja näyttää ne tyylikkäämmässä käyttöliittymässä. Suosikaa käyttäjälle näytettävissä viesteissä vim.notify-funktiota suoran print-kutsun sijaan.
vim.notify('Plugin loaded', vim.log.levels.INFO)
vim.notify('Missing config', vim.log.levels.WARN)Ajoittaminen vim.schedulella
Jotkin API-kutsut eivät ole sallittuja nopean tapahtuman konteksteissa, kuten tiettyjen takaisinkutsujen sisällä. vim.schedule siirtää funktion suoritettavaksi pääsilmukkaan, jossa koko API on turvallisesti käytettävissä.
Näin vältetään pelätyt "E5560"-virheet, joita syntyy puskureita muokattaessa asynkronisista konteksteista tai automaattikomennoista.
vim.schedule(function()
vim.api.nvim_buf_set_lines(0, 0, 0, false, {'Hello'})
end)Autokomennot Lualla
nvim_create_autocmd rekisteröi tapahtumankäsittelijöitä. Ryhmitelkää ne nvim_create_augroup-funktiolla ja asettakaa clear = true päälle, jotta uudelleenlataus ei luo kaksoiskappaleita.
Takaisinkutsu saa tapahtumataulukon, jonka kenttiä ovat esimerkiksi buf ja match. Näin käsittelijälle voidaan välittää täsmällinen konteksti.
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 ja merkkijonoapuohjelmat
Neovim sisältää monipuolisen vakiokirjaston. vim.tbl_extend, vim.tbl_keys ja vim.split kattavat tavalliset taulukko- ja merkkijonokäsittelyt.
vim.tbl_deep_extend('force', defaults, opts) on vakiintunut tapa yhdistää käyttäjän määritykset liitännäisen oletusmääritysten päälle.
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 virheenkorjauksessa
vim.inspect muuntaa minkä tahansa Lua-arvon luettavaksi merkkijonoksi, myös sisäkkäiset taulukot. Se on nopein tapa selvittää API-kutsujen palauttamien arvojen rakenne.
Yhdistäkää se muotoon :lua print(vim.inspect(...)) tai käyttäkää uudemmissa Neovim-versioissa muotoa :lua= expr nopeaan tarkasteluun kehityksen aikana.
local info = vim.api.nvim_get_mode()
print(vim.inspect(info))APIn ja Vimscriptin kompromissit
Suosikaa vakaisiin ja rakenteisiin operaatioihin vim.api-rajapintaa. Käyttäkää vim.fn- tai vim.cmd-rajapintaa, jos natiivia funktiota ei ole.
vim.cmd suorittaa ex-komentoja merkkijonoina ja sopii hyvin yksittäisiin tapauksiin, kuten vim.cmd('highlight ...'), mutta sen rakenne on vaikeampi tarkastella kuin tyypitettyjen API-kutsujen.
vim.cmd('syntax on')
vim.cmd.colorscheme('habamax')Pikatarkistus
Testatkaa, miten hyvin tunnette Neovimin Lua-APIn.
Kertaus: Lua-API
Tunnette nyt keskeiset rajapinnat: vim.api tyypitettyyn natiiviin APIin, vim.fn Vimscript-funktioihin ja vim.cmd ex-komentoihin.
Asetukset kulkevat rajapintojen vim.o/bo/wo kautta, muuttujat rajapintojen vim.g/b/w kautta, ja apufunktiot, kuten vim.tbl_deep_extend, vim.notify ja vim.schedule, täydentävät liitännäisen tekijän työkalupakkia.
Opi Lua tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 40
- Oppitunnit
- 159
Usein kysytyt kysymykset
Onko oppitunti ”Neovimin Lua-API” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Lua Academy-oppimispolun 3 oppituntia, myös oppitunnin “Neovimin Lua-API”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Lua Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Neovimin Lua-API”?
Miten liitännäiset kytkeytyvät mukaan. Harjoittelet Lua Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Lua Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Lua Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Neovimin Lua-API”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Lua Academy-oppitunnilla?
Kyllä. Jokainen Lua Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.