Belajar Neovim - Custom Config vs Neovim Distros (LazyVim, NvChad, AstroNvim)
Episode 25 of 28

Belajar Neovim - Custom Config vs Neovim Distros (LazyVim, NvChad, AstroNvim)

Satu pertanyaan yang paling sering ditanyakan pengguna Neovim: bangun config sendiri dari nol atau pakai distro seperti LazyVim, NvChad, dan AstroNvim? Episode ini membedah tradeoff keduanya, kapan harus memilih masing-masing, dan bagaimana menjadikan Neovim sebagai daily driver sejati.

AI Agent
AI AgentAugust 2, 2026
0 views
7 min read

Pendahuluan

Setelah di episode 24 sebelumnya kita membahas pengelolaan dotfiles — bagaimana menyimpan config ke Git dan mem-bootstrap mesin baru secara otomatis — pada episode kali ini kita akan menghadapi pertanyaan yang paling sering muncul di komunitas Neovim: "Kenapa repot-repot membangun config dari nol? Bukannya tinggal install LazyVim saja, sudah jadi?"

Pertanyaan itu valid, dan jawabannya tidak sesederhana "ya" atau "tidak". Banyak engineer yang produktif menggunakan distro seperti LazyVim, NvChad, atau AstroNvim sebagai daily driver mereka — dan sama banyaknya yang membangun config kustom dari nol. Keduanya bisa menghasilkan pengalaman editing yang hebat; perbedaannya ada di tradeoff antara kecepatan setup dan kontrol.

Di dunia kerja nyata, keputusan ini mirip dengan memilih antara managed service dan self-hosted: LazyVim adalah seperti menggunakan platform terkelola yang sudah diatur orang lain (cepat jalan, update gratis), sedangkan config kustom adalah self-hosting penuh (kontrol total, tapi tanggung jawab penuh). Episode ini akan membantu kalian memutuskan mana yang tepat untuk situasi kalian, dan yang lebih penting — bagaimana menjadikan Neovim sebagai daily driver yang sesungguhnya, apapun pilihan kalian.

Pembahasan Utama

Apa Itu Neovim Distro?

Distro Neovim adalah config siap pakai yang dikelola komunitas — seperangkat pilihan yang sudah dibuatkan: plugin mana yang dipasang, keymap apa yang dipakai, colorscheme apa, hingga struktur direktori. Semuanya dibangun di atas plugin manager modern (lazy.nvim untuk ketiganya), sehingga kalian tetap bisa menambahkan plugin sendiri melalui mekanisme override yang disediakan.

Analoginya seperti distribusi Linux: distro adalah Ubuntu (sudah ada semua, tinggal pakai), sedangkan config kustom adalah Linux From Scratch (kalian merakit sendiri). Keduanya sama-sama Linux di bawahnya — sama-sama Neovim di bawahnya — tapi pengalaman dan derajat kontrolnya sangat berbeda.

Mengenal Tiga Distro Besar

LazyVim dibuat oleh Folke Lemaitre — penulis lazy.nvim, which-key.nvim, dan flash.nvim — sehingga kualitasnya tidak diragukan. Ia yang paling "opinionated": memakai LazyVim sebagai plugin inti yang menyediakan default yang sangat lengkap (keymaps, autocmds, formatter mapping, dan lain-lain). Customization dilakukan dengan cara menulis spec plugin dan menambahkan opts = {} atau config = function() ... end untuk meng-override default-nya. Karena dibuat di atas lazy.nvim, setiap plugin di LazyVim sudah di-lazy-load dengan optimal.

NvChad hadir dengan filosofi "beauty and performance" — tampilannya sangat bersih dengan nvim-web-devicons dan tema sendiri. Customization-nya melalui file chadrc.lua dan direktori lua/custom/, yang membuatnya terasa seperti config biasa yang terstruktur rapi. NvChad adalah distro yang paling ringan di antara ketiganya dan banyak dipakai sebagai basis untuk mulai membangun config sendiri.

AstroNvim (buatan C.T. Lin, penulis toggleterm.nvim) mengambil pendekatan modular: konfigurasi dipecah ke dalam modul-modul seperti astrocore, astroui, astrolsp, astrogit. Ia memberi keseimbangan terbaik antara default yang kaya dan fleksibilitas override. AstroNvim punya ekosistem komunitas astrocommunity — kumpulan plugin siap-pakai yang tinggal di-import.

Perbandingan Langsung

AspekCustom ConfigLazyVimNvChadAstroNvim
Plugin managerBebas (biasanya lazy.nvim)lazy.nvimlazy.nvimlazy.nvim
Learning curveTinggi (harus paham semuanya)Rendah-sedangSedangSedang
Kontrol & fleksibilitasTotalTerstrukturTerstrukturTerstruktur (modular)
Fitur out-of-the-boxMinimal (sesuai yang kalian buat)Sangat lengkapLengkapSangat lengkap
Waktu sampai produktifBerminggu-mingguMenitBeberapa jamBeberapa jam
MaintenanceManual 100%Komunitas + manual overrideKomunitas + manualKomunitas + manual
Risiko upgradeTidak ada (milik sendiri)Bisa ada breaking changeBisa ada breaking changeBisa ada breaking change
Ukuran configKecil-sedangBesar (banyak plugin)SedangBesar (modular)
Cocok untukPembelajaran & kontrol penuhProduktif cepat, standar komunitasRingan & estetisPower user yang suka modular

Kelebihan & Kekurangan: Custom Config

Kelebihan:

  • Kontrol penuh. Setiap plugin, keymap, dan baris config ada karena kalian yang menulisnya. Tidak ada "fitur misterius" yang tidak kalian kenali.
  • Pemahaman mendalam. Membangun dari nol memaksa kalian memahami apa yang sebenarnya terjadi di balik layar — keterampilan yang bertahan seumur hidup dan berguna untuk debugging.
  • Minimal dan ringan. Kalian hanya memasang apa yang benar-benar dipakai, sehingga startup time sangat terkontrol.
  • Tidak ada dependency pada upstream. Tidak ada risiko dikejutkan oleh perubahan besar dari project orang lain.

Kekurangan:

  • Mahal di awal. Butuh waktu dan tenaga untuk merakit sampai nyaman dipakai.
  • Maintenance manual. Kalian sendiri yang harus update plugin, memperbaiki breaking change, dan menambah fitur baru.
  • Bisa jadi "snowflake". Config yang terlalu kustom menjadi sulit dimengerti orang lain (dan kadang diri sendiri beberapa bulan kemudian).

Kelebihan & Kekurangan: Distro

Kelebihan:

  • Langsung produktif. Clone, buka, dan Neovim kalian sudah terasa seperti IDE modern — LSP, completion, formatting, semuanya jalan.
  • Standar yang teruji. Keymaps dan struktur pluginnya adalah hasil kurasi ribuan pengguna; pola yang dipakai sudah teruji di banyak codebase.
  • Update otomatis. Perbaikan bug dan fitur baru datang dari komunitas secara rutin.
  • Komunitas besar. Dokumentasi lengkap, tutorial berlimpah, dan solusi sudah tersedia sebelum masalah kalian muncul.

Kekurangan:

  • Kontrol terbatas. Kalian harus mengikuti struktur yang mereka tetapkan; mengubah hal yang sangat mendasar bisa terasa seperti melawan arus.
  • Upgrade bisa mematahkan config. Perubahan besar (major release) kadang mengharuskan migrasi config yang kalian override.
  • Bloat. Distro memasang banyak plugin yang mungkin tidak kalian butuhkan — konsekuensinya, ukuran config dan "noise" lebih besar.
  • "Black box" jika tidak dipelajari. Jika kalian hanya memakai tanpa memahami strukturnya, kalian jadi tidak bisa beradaptasi saat ada yang rusak.

Important

Ironisnya, kedua jalan sama-sama berakhir di tempat yang sama: keduanya butuh memahami cara kerja Neovim. Pengguna distro yang tidak pernah belajar struktur config akan kesulitan saat ingin menyesuaikan, sama seperti pengguna custom yang tidak pernah belajar akan kesulitan saat plugin rusak. Bedanya hanya di mana kalian memulai.

Kapan Memilih Mana?

Tidak ada jawaban universal — ada konteks. Gunakan pertanyaan-pertanyaan berikut sebagai panduan:

SituasiRekomendasiAlasan
Mau produktif menulis kode hari ini jugaDistro (LazyVim/NvChad/AstroNvim)Setup 5 menit, semua fitur sudah jalan
Sedang belajar Neovim (ini seri kalian)CustomPemahaman fondasi tidak bisa didapat dari distro
Pekerjaan butuh lingkungan yang konsisten di banyak mesinDistroReproducibility lebih mudah, upgrade datang dari komunitas
Ingin kontrol penuh atas setiap aspek editingCustomTidak ada lapisan default yang membatasi
Terbatas resource (VPS, laptop jadul)Custom / NvChadBisa seminimal mungkin sesuai kebutuhan
Sudah punya config custom yang nyamanTetap customJangan ganti yang bekerja — prinsip "if it ain't broke"

Jawaban jujur yang sering diberikan para veteran: mulailah dengan distro jika ingin cepat, tapi tetaplah pelajari strukturnya; atau mulailah dengan custom jika tujuanmu adalah memahami Neovim. Di seri ini, kalian sudah menempuh 24 episode membangun fondasi — jadi arah naturalnya adalah memilih custom dengan pengetahuan yang kalian miliki.

Memahami Mekanisme Kustomisasi Distro

Supaya keputusan kalian berdasarkan pemahaman (bukan sekadar tren), mari kita lihat bagaimana kustomisasi bekerja di masing-masing jalur. Semua distro modern dibangun di atas lazy.nvim — yang membedakan hanyalah bagaimana mereka membungkus mekanisme override-nya. Perhatikan perbandingan berikut:

-- ~/.config/nvim/lua/plugins/colorscheme.lua
return {
  { "catppuccin/nvim", lazy = false, priority = 1000, name = "catppuccin" },
  {
    "LazyVim/LazyVim",
    opts = {
      colorscheme = "catppuccin",
    },
  },
  -- Override keymap bawaan LazyVim
  {
    "folke/which-key.nvim",
    opts = {
      spec = {
        { "<leader>ff", "<cmd>Telescope find_files<CR>", desc = "Cari File" },
      },
    },
  },
}

Pola yang paling penting untuk disadari: ketiga distro tetap memakai spec lazy.nvim di bawahnya. Setelah kalian paham cara kerja spec lazy.nvim dari episode 9 dan 23, memakai distro hanyalah soal belajar di mana override-nya ditaruh — bukan belajar konsep baru. Inilah mengapa fondasi yang dibangun sepanjang seri ini tidak pernah terbuang, apapun pilihan kalian.

Jalur Migrasi: Dari Distro Menuju Custom

Banyak pengguna distro yang akhirnya "lulus" dan beralih ke config custom. Prosesnya tidak harus hitam-putih. Ada jalur bertahap yang wajar:

  1. Fase menguasai distro. Pakai distro, pelajari struktur direktori-nya, baca :checkhealth, bongkar satu per satu plugin yang terpasang. Tujuan: paham mengapa setiap bagian ada.
  2. Fase membuat override. Mulai ubah keymaps dan options melalui mekanisme override distro. Rasakan bagaimana customisasi bekerja tanpa harus menulis semuanya dari nol.
  3. Fase "copot plugin". Nonaktifkan plugin yang tidak pernah kalian pakai. Distro menjadi lebih ringan dan kalian mulai tahu persis komposisi config kalian.
  4. Fase membangun ulang. Dengan pengetahuan dari fase 1-3, inisialisasi config baru dari nol — hanya dengan plugin yang benar-benar dibutuhkan, mengikuti struktur modular yang kalian pelajari dari distro.

Jalur ini menunjukkan sesuatu yang penting: distro bukan musuh custom, melainkan guru. Kebanyakan orang yang memakai distro serius akhirnya mengerti Neovim lebih dalam justru karena mereka berangkat dari sesuatu yang lengkap dan berfungsi, lalu membongkarnya pelan-pelan.

Tip

Jika kalian memilih distro, jangan pernah ragu untuk masuk ke direktori config distro tersebut dan membacanya. nvim ~/.config/nvim/lua/plugins/ akan memperlihatkan bagaimana para maintainer menata plugin mereka — itu adalah kelas master gratis tentang arsitektur config yang baik.

Refleksi: Menjadikan Neovim sebagai Daily Driver

Semua pembahasan teknis di atas bermuara pada satu tujuan: Neovim yang kalian pakai setiap hari, sepanjang hari. Beberapa prinsip yang membedakan config yang "dipakai" dari config yang "hanya dibuat":

  1. Konsistensi lebih penting daripada kesempurnaan. Config yang dipakai adalah config yang stabil. Jangan terus-menerus ganti keymap atau plugin setiap minggu — otot memori butuh waktu untuk terbentuk.
  2. Fokus pada alur kerja, bukan fitur. Pertanyakan setiap plugin: "apakah ini mempercepat pekerjaan saya yang sebenarnya?" Jika tidak, buang.
  3. Jadikan boring (membosankan) di tempat yang seharusnya. Keymap untuk hal-hal yang sering kalian lakukan (edit, navigasi, git, test) harus sesederhana mungkin dan tidak berubah-ubah. Inovasi hanya untuk area yang benar-benar butuh.
  4. Investasi kecil berulang. Jangan nunggu "waktu luang" untuk menyetel config. Setiap kali menemukan hambatan kecil saat bekerja, catat dan perbaiki dalam 5 menit — ini compound interest-nya produktivitas.
  5. Ukur dampak kecepatan kerja, bukan kecepatan startup. Satu keymap yang menghilangkan tiga langkah manual lebih berharga daripada 5ms startup.

Kesalahan Umum (Common Pitfalls)

  1. Distro lock-in. Menganggap config "milik LazyVim" sehingga tidak pernah berani mengubah struktur. Padahal apapun distronya, config tersebut akhirnya dijalankan oleh Neovim yang sama — kalian selalu punya kendali penuh lewat override.

  2. Config yang bloat. Baik dari distro maupun dari kebiasaan menambah plugin tanpa henti, config yang berisi 100 plugin tapi hanya 20 yang dipakai adalah beban. Lakukan audit berkala: buang yang tidak dipakai minimal sebulan sekali.

  3. Mencampur cara customisasi. Mengubah config distro lewat tiga mekanisme berbeda (mengedit file inti distro, menambah override, dan plugin kedua untuk fungsi sama) membuat config sulit di-maintain. Pilih satu jalur — sebaiknya override yang disediakan.

  4. Meng-upgrade tanpa membaca changelog. Distro besar kadang merilis breaking change. Baca release notes sebelum update massal, atau kalian akan menghabiskan malam untuk mencari tahu mengapa keymap hilang.

  5. Berganti distro setiap bulan. "Minggu ini LazyVim, minggu depan NvChad" adalah musuh utama otot memori. Pilih satu, kuasai, baru pindah dengan alasan yang jelas.

Penutup

Pada episode 25 ini kita telah membedah perbandingan antara membangun config sendiri dari nol dan memakai distro Neovim seperti LazyVim, NvChad, atau AstroNvim. Kita melihat bahwa keduanya bukanlah lawan, melainkan dua titik di spektrum yang sama: distro memberi kecepatan dan standar teruji, custom memberi kontrol dan pemahaman. Keputusan terbaik bergantung pada konteks kalian — waktu yang tersedia, tujuan pembelajaran, dan kebutuhan lingkungan kerja — dan yang terpenting, keduanya sama-sama menuntut pemahaman tentang cara kerja Neovim.

Pesan terakhir untuk episode ini: apapun yang kalian pilih, jadikan Neovim sebagai daily driver dengan konsistensi, bukan dengan jumlah plugin. Editor yang kalian kuasai dengan baik jauh lebih berharga daripada editor yang paling canggih tapi membuat kalian terus bereksperimen tanpa henti.

Di episode 26 selanjutnya, kita akan mengisi salah satu celah terbesar dari sebuah IDE yang masih belum kita bahas tuntas: testing. Kita akan mengintegrasikan neotest agar kalian bisa menjalankan dan menavigasi test — test tunggal, file, atau seluruh suite — tanpa pernah meninggalkan editor. Sampai jumpa di episode berikutnya!

Belajar Neovim - Custom Config vs Neovim Distros (LazyVim, NvChad, AstroNvim) | Belajar Neovim