0Pricing
Lua Academy · Ders

Neovim Lua API'si

Eklentilerin nasıl bağlandığını öğrenin.

Neovim Lua API'si, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.

Neovim'de Lua Neden Kullanılır

Neovim, bir LuaJIT çalışma zamanı içerir; böylece Lua, Vimscript'in yanında yerel betik dili olarak kullanılabilir. Eklenti yazarları Lua'yı hızı, gerçek veri yapıları ve yalın modül sistemi nedeniyle tercih eder.

Genel vim tablosu her şeye açılan geçittir: düzenleyici durumu, API, seçenekler ve standart kitaplık yardımcıları. Bu tabloda ustalaşmak, modern eklenti geliştirmenin temelidir.

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

vim.api Katmanı

vim.api, düşük seviyeli uzak API'yi kullanıma sunar: nvim_ ön ekiyle başlayan her işlevi içerir. Bunlar, harici istemcilerin RPC üzerinden kullandığı çağrıların aynısıdır; ancak aynı işlem içinde çalıştıkları için anında yürütülürler.

nvim_get_current_buf, nvim_buf_set_lines ve nvim_command gibi işlevler kesin denetim sağlar. Bunlar kararlı, iyi belgelenmiş ve ciddi eklentilerin temelini oluşturan işlevlerdir.

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

vim.fn — Vimscript İşlevlerini Çağırma

vim.fn, Vimscript'in yerleşik işlevlerine erişim sağlar. Vimscript'te çağrılabilen expand() veya fnamemodify() gibi her şeye vim.fn.expand(...) biçiminde erişebilirsiniz.

Yerel bir API henüz bulunmadığında bu özellik çok değerlidir. Bağımsız değişkenler ve dönen değerler, Lua ile Vimscript türleri arasında otomatik olarak dönüştürülür.

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

Seçenekler: vim.o, vim.bo, vim.wo

Seçenekler üst tablolar aracılığıyla ayarlanır. vim.o genel seçenekleri, vim.bo arabelleğe özgü seçenekleri, vim.wo ise pencereye özgü seçenekleri hedefler.

Atama yalnızca bir alan yazmak kadar basittir. Bu yaklaşım, uzun nvim_set_option çağrılarının yerini alır ve yapılandırma kodunun daha doğal okunmasını sağlar.

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

vim.g ve Genel Değişkenler

vim.g, genel Vim değişkenlerini okur ve yazar. Eklentiler, vim.g.myplugin_enabled gibi yapılandırma seçeneklerini genellikle burada sunar.

Ayarlanmamış bir değişkeni okumak nil döndürür; bu nedenle varsayılan değerlerle güvenceye alın. Arabelleğe ve pencereye özgü karşılıklar vim.b ve vim.w olarak bulunur.

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

Bildirimler ve Yankı

Mesajları kullanıcıya göstermek için vim.notify kullanın. Bu işlev bir mesaj dizesi ve isteğe bağlı olarak vim.log.levels içinden bir günlük düzeyi kabul eder.

noice veya notify gibi eklentiler, daha iyi bir kullanıcı arayüzü sağlamak için bu mesajları yakalayabilir. Kullanıcıya gösterilen çıktılar için ham print yerine vim.notify kullanmayı tercih edin.

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

vim.schedule ile Zamanlama

Bazı API çağrıları, belirli geri çağrılarının içi gibi hızlı olay bağlamlarında yasaktır. vim.schedule, bir işlevi tam API'nin güvenle kullanılabildiği ana döngüye erteler.

Bu, eşzamansız veya otomatik komut bağlamlarından arabellekleri değiştirirken karşılaşılan korkulan "E5560" hatalarını önler.

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

Lua ile Otomatik Komutlar

nvim_create_autocmd, olay işleyicilerini kaydeder. Bunları nvim_create_augroup ile gruplandırın ve yeniden yükleme sırasında yinelenen kayıtları önlemek için clear = true ayarlayın.

Geri çağrı, buf ve match gibi alanları içeren bir olay tablosu alır; bu da işleyiciniz için kesin bağlam sağlar.

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 ve Dize Yardımcıları

Neovim, kapsamlı bir standart kitaplıkla birlikte gelir. vim.tbl_extend, vim.tbl_keys ve vim.split, tablolarla ve dizelerle ilgili yaygın işlemleri karşılar.

vim.tbl_deep_extend('force', defaults, opts), kullanıcı yapılandırmasını eklentinin varsayılanlarıyla birleştirmenin önerilen standart yoludur.

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

Hata Ayıklama için vim.inspect

vim.inspect, iç içe tablolar da dahil olmak üzere herhangi bir Lua değerini okunabilir bir dizeye dönüştürür. API çağrılarının döndürdüğü değerlerin yapısını anlamanın en hızlı yoludur.

Geliştirme sırasında hızlı inceleme yapmak için bunu :lua print(vim.inspect(...)) veya yeni Neovim sürümlerindeki :lua= expr ile birlikte kullanın.

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

API ile Vimscript Arasındaki Tercihler

Kararlı ve yapılandırılmış işlemler için vim.api kullanmayı tercih edin. Yerel bir işlev bulunmadığında vim.fn veya vim.cmd ile geri dönüş yapın.

vim.cmd, ex komutlarını dize olarak yürütür ve vim.cmd('highlight ...') gibi tek seferlik işlemler için kullanışlıdır; ancak tür bilgili API çağrılarına göre iç yapısı daha zor incelenir.

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

Hızlı Kontrol

Neovim Lua API'si hakkındaki anlayışınızı sınayın.

Özet: Lua API'si

Artık temel kullanım alanlarını biliyorsunuz: tür bilgili yerel API için vim.api, Vimscript işlevleri için vim.fn ve ex komutları için vim.cmd.

Seçenekler vim.o/bo/wo üzerinden, değişkenler vim.g/b/w üzerinden yönetilir; vim.tbl_deep_extend, vim.notify ve vim.schedule gibi yardımcılar da eklenti yazarının araç takımını tamamlar.

Sıkça Sorulan Sorular

“Neovim Lua API'si” dersi ücretsiz mi?

Evet — “Neovim Lua API'si” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.

“Neovim Lua API'si” dersinde ne öğreneceğim?

Eklentilerin nasıl bağlandığını öğrenin. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Lua Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Neovim Lua API'si” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Neovim Lua API'si
  2. Komutlar ve Tuş Eşlemeleri
  3. Tamponlar ve Pencereler
  4. Eklenti Paketleme
← Lua Academy Sayfasına Dön