- Published on
Neovim Kurulumu ve İlk Eklentiler — Bölüm 1
- Authors

- Name
- Berk
Neovim’i sıfırdan kurup ilk eklentileri ekleyerek kullanışlı ve şık bir geliştirme deneyimi oluşturacağız. Bu ilk bölümde hedefimiz: init.lua dosyasını hazırlamak, lazy.nvim eklenti yöneticisini kurmak, bir renk şeması eklemek, durum çubuğunu lualine ile güzelleştirmek ve nvim-treesitter ile sözdizimi vurgusunu açmak.
Önkoşullar ve hızlı kontrol
- Neovim 0.9+ sürümü önerilir.
- Terminal kullanımı ve Git kurulu olmalı (lazy.nvim repo klonlayacak).
- Neovim’in genel sağlığını kontrol etmek için komut modunda
:checkhealthçalıştırabilirsiniz.
Konfigürasyon klasörü ve init.lua
Neovim kullanıcı ayarları varsayılan olarak şu dosyada bulunur:
- Linux/macOS:
~/.config/nvim/init.lua - Windows:
%USERPROFILE%\AppData\Local\nvim\init.lua
İlk dosyayı oluşturalım:
mkdir -p ~/.config/nvim
nvim ~/.config/nvim/init.lua
İçine ufak bir test koyup Neovim’i yeniden başlattığınızda mesajı görmelisiniz:
print('Merhaba, Lua!')
lazy.nvim ile eklenti yönetimi
lazy.nvim, eklentileri yükleme/güncelleme/kaldırma işlerini basit bir arayüzle yönetir. Aşağıdaki kodu init.lua içine ekleyelim. Bu kod, lazy’yi ilk açılışta otomatik kurar ve yolunu runtimepath’e ekler.
-- lazy.nvim bootstrap
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
'git', 'clone', '--filter=blob:none',
'https://github.com/folke/lazy.nvim.git', '--branch=stable', lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
-- leader tuşları (lazy dokümantasyonu space’i varsayıyor)
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
-- temel tercihleri (opsiyonel, önerilir)
vim.opt.expandtab = true
vim.opt.shiftwidth = 2
vim.opt.tabstop = 2
vim.opt.number = true
vim.opt.relativenumber = true
require('lazy').setup({
spec = {
-- Eklentileri bu listeye ekleyeceğiz
},
})
Neovim’i açıp :Lazy yazdığınızda arayüzü görürsünüz. :checkhealth lazy ile de durumu doğrulayabilirsiniz.
Renk şeması ekleme (Vague)
Favori bir tema ile başlayalım. Burada Nightfly kullanıyoruz; kurulumla birlikte varsayılan tema olarak ayarlayacağız.
{
'vague2k/vague.nvim',
lazy = false, -- ilk açılışta aktif olsun
priority = 1000, -- tema önce yüklensin
config = function()
vim.cmd.colorscheme('vague')
end,
},
Bu bloğu require('lazy').setup({ spec = { ... } }) içindeki listeye ekleyin.
Durum çubuğu: lualine
lualine, mod, konum, dosya türü, git dalı gibi yararlı bilgileri gösteren sade bir durum çubuğudur.
{
'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' },
config = function()
require('lualine').setup({
options = {
theme = 'nightfly',
icons_enabled = true,
globalstatus = true,
},
})
end,
},
Kurulduktan sonra alt barda aktifleştiğini göreceksiniz.
Sözdizimi vurgusu: nvim-treesitter
nvim-treesitter, dil ağacını kullanarak daha isabetli vurgulama ve girintileme sağlar.
{
'nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
config = function()
require('nvim-treesitter.configs').setup({
ensure_installed = { 'lua', 'vim', 'vimdoc', 'javascript' },
highlight = { enable = true },
indent = { enable = true },
})
end,
},
Yüklü dilleri :TSInstallInfo ile görebilir, eksik dili :TSInstall javascript gibi komutlarla kurabilirsiniz. Geçici olarak vurgulamayı kapatıp açmak için :TSBufDisable highlight / :TSBufEnable highlight kullanabilirsiniz.
Tam örnek init.lua
Aşağıda yukarıdaki adımları birleştiren kısa bir örnek var. Kendi tercihlerinize göre eklenti listesini genişletebilirsiniz.
-- bootstrap lazy.nvim
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
'git', 'clone', '--filter=blob:none',
'https://github.com/folke/lazy.nvim.git', '--branch=stable', lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
vim.opt.expandtab = true
vim.opt.shiftwidth = 2
vim.opt.tabstop = 2
vim.opt.number = true
require('lazy').setup({
spec = {
{
'vague2k/vague.nvim',
lazy = false, -- ilk açılışta aktif olsun
priority = 1000, -- tema önce yüklensin
config = function()
vim.cmd.colorscheme('vague')
end,
},
{
'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' },
config = function()
require('lualine').setup({
options = { theme = 'nightfly', icons_enabled = true, globalstatus = true },
})
end,
},
{
'nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
config = function()
require('nvim-treesitter.configs').setup({
ensure_installed = { 'lua', 'vim', 'vimdoc', 'javascript' },
highlight = { enable = true },
indent = { enable = true },
})
end,
},
},
})
Sonuç ve bir sonraki adım
Bu bölümde Neovim’i kurup temel görsel/ergonomik iyileştirmeleri yaptık: tema, durum çubuğu ve gelişmiş sözdizimi vurgusu. Bir sonraki bölümde LSP (dil sunucuları), otomatik tamamlama (nvim-cmp), dosya arama ve gezinme (Telescope) ve formatlayıcı/diagnostic entegrasyonlarını ele alacağız.