Tamponlar ve Pencereler
Düzenleyiciyi yönetin.
Tamponlar ve Pencereler, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 3. 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.
Arabellekler, Pencereler, Sekmeler
Neovim, içeriği görünümden ayırır. Bir arabellek metni bellekte tutar; bir pencere, arabelleği görüntüleyen alandır; bir sekme sayfası ise pencerelerden oluşan bir düzendir.
Tek bir arabellek birçok pencerede görünebilir. Eklentiler, tamsayı olan bu tanıtıcıları nvim_buf_* ve nvim_win_* API aileleri aracılığıyla yönetir.
local buf = vim.api.nvim_get_current_buf()
local win = vim.api.nvim_get_current_win()
print(buf, win)Arabellek Satırlarını Okuma
nvim_buf_get_lines(buf, start, end_, strict), satırları bir liste olarak döndürür. İndeksler sıfır tabanlıdır ve bitiş değeri aralığa dahil edilmez; son satıra ulaşmak için bitiş değeri olarak -1 geçirin.
strict_indexing değerini false olarak ayarlamak, aralık dışındaki indeksleri hata vermek yerine kabul eder.
local lines = vim.api.nvim_buf_get_lines(0, 0, -1, false)
print('line count: ' .. #lines)Arabellek Satırlarını Yazma
nvim_buf_set_lines, bir aralığı yeni metinle değiştirir. Sonuna eklemek için hem başlangıcı hem de bitişi -1 olarak ayarlayın. Her şeyi değiştirmek için 0, -1 kullanın.
Değiştirilecek içerik, her satır için bir dize içeren ve sonunda satır sonu karakterleri bulunmayan bir Lua listesidir.
vim.api.nvim_buf_set_lines(0, -1, -1, false, {
'-- appended line',
})Taslak Arabellekler
nvim_create_buf(listed, scratch) ile listede yer almayan, geçici bir arabellek oluşturun. false, true geçirmek, taslak arabelleği eklentinin kullanıcı arayüzü için ideal hâle getirir.
Pencere kapandığında ortadan kalkması için bufhidden = 'wipe' ayarlayın; böylece geride arabellek kalmaz.
local buf = vim.api.nvim_create_buf(false, true)
vim.bo[buf].bufhidden = 'wipe'
vim.api.nvim_buf_set_lines(buf, 0, -1, false, { 'Panel' })Arabelleğe Özgü Seçenekler
Belirli bir tanıtıcıdaki arabelleğe özgü seçenekleri ayarlamak için vim.bo[buf] dizinlemesini kullanın. Yaygın eklenti ayarları arasında modifiable = false ve buftype = 'nofile' bulunur.
Bir görüntü arabelleğini değiştirilemez yapmak, kullanıcıların oluşturulan içeriği yanlışlıkla düzenlemesini önler.
vim.bo[buf].modifiable = false
vim.bo[buf].buftype = 'nofile'
vim.bo[buf].filetype = 'myplugin'Kayan Pencereleri Açma
nvim_open_win(buf, enter, config), bir arabelleği kayan pencereye yerleştirir. Yapılandırma; relative, row, col, width, height ve border değerlerini belirler.
Kayan pencereler, üzerine gelindiğinde gösterilen belgeler, seçiciler ve bildirimler gibi modern kullanıcı arayüzlerinin temelini oluşturur.
local win = vim.api.nvim_open_win(buf, true, {
relative = 'editor', row = 5, col = 10,
width = 40, height = 10, border = 'rounded',
})Pencere Yapılandırması
Açık bir kayan pencereyi nvim_win_set_config ile ayarlayın; bu, VimResized sonrasında yeniden boyutlandırma için kullanışlıdır. Geçerli düzeni nvim_win_get_config ile okuyun.
Pencereye özgü seçenekleri vim.wo[win] üzerinden ayarlayın; örneğin kullanıcı arayüzü panellerinde imleç satırını gizleyebilir veya numara sütunlarını devre dışı bırakabilirsiniz.
vim.wo[win].number = false
vim.wo[win].cursorline = true
vim.api.nvim_win_set_config(win, { width = 50 })İmleç ve Konum
İmleci nvim_win_set_cursor(win, {row, col}) ile taşıyın. Satırın bir tabanlı, sütunun ise sıfır tabanlı olduğuna dikkat edin; bu, sık rastlanan bir eksik/fazla hatası kaynağıdır.
Bir işlemden önce kullanıcının konumunu hatırlamak ve sonrasında geri yüklemek için imleci nvim_win_get_cursor ile okuyun.
local pos = vim.api.nvim_win_get_cursor(0)
vim.api.nvim_win_set_cursor(0, { pos[1], 0 })Geçerlilik ve Temizleme
Tanıtıcılar geçersizleşebilir. Saklanan tanıtıcılar üzerinde işlem yapmadan önce nvim_buf_is_valid ve nvim_win_is_valid ile geçerliliklerini doğrulayın.
Pencereleri nvim_win_close(win, force) ile kapatın ve arabellekleri nvim_buf_delete(buf, { force = true }) ile silin. Hataları önlemek için her zaman önce geçerlilik denetimi yapın.
if vim.api.nvim_win_is_valid(win) then
vim.api.nvim_win_close(win, true)
endGenişletilmiş İşaretler ve Ad Alanları
Genişletilmiş işaretler, düzenlemeler yapıldıkça hareket eden metne üstveri sabitler. nvim_create_namespace ile bir ad alanı oluşturun, ardından sanal metin veya vurgular ekleyin.
nvim_buf_set_extmark, virt_text, işaret sütunlarını ve satır içi vurguları destekler; satır içi ipuçlarıyla Git değişikliklerini gösteren eklentilerin temelindeki motor budur.
local ns = vim.api.nvim_create_namespace('myplugin')
vim.api.nvim_buf_set_extmark(0, ns, 0, 0, {
virt_text = { { ' hint', 'Comment' } },
})Listeleme ve Yineleme
nvim_list_bufs ve nvim_list_wins, mevcut tüm tanıtıcıları döndürür. Bunları nvim_buf_is_loaded kullanarak veya seçenekleri denetleyerek filtreleyin.
Yineleme, bir eklentinin tüm oturum genelinde işlem yapmasını sağlar; örneğin her kayan pencereyi kapatabilir veya belirli bir dosya türüne ait her tamponu yenileyebilirsiniz.
for _, b in ipairs(vim.api.nvim_list_bufs()) do
if vim.api.nvim_buf_is_loaded(b) then print(b) end
endHızlı Kontrol
Tamponlar ve pencereler hakkında öğrendiklerinizi doğrulayın.
Özet: Tamponlar ve Pencereler
Tamponlar metni tutar, pencereler bunları görüntüler ve tanıtıcılar, kullanmadan önce doğruladığınız tamsayılardır. Satırları okuyup yazabilir, geçici tamponlar oluşturabilir ve tampona özgü seçenekleri ayarlayabilirsiniz.
nvim_open_win aracılığıyla kayan pencereler, imleç denetimi, genişletilmiş işaretler ve listeleme arayüzleri, zengin ve durum bilgili eklenti kullanıcı arayüzleri oluşturmak için gereken her şeyi sağlar.
Sıkça Sorulan Sorular
“Tamponlar ve Pencereler” dersi ücretsiz mi?
Evet — “Tamponlar ve Pencereler” 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.
“Tamponlar ve Pencereler” dersinde ne öğreneceğim?
Düzenleyiciyi yönetin. 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 3. dersidir.
“Tamponlar ve Pencereler” 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
- Neovim Lua API'si
- Komutlar ve Tuş Eşlemeleri
- Tamponlar ve Pencereler
- Eklenti Paketleme