Back to writing

📽️

Apakah Neovim benar benar lebih baik daripada VSCode?

February 18, 2024

6 min read

Dalam waktu 1 bulan ini, saya baru saja nyobain neovim. Saya merasa banyak hal yang semakin produktif dan secara bersamaan banyak hal juga yang ngga produktif. Disini saya mau sharing pengalaman 1 bulan menggunakan neovim dan bagaimana perbandingannya dengan editor sejuta umat yakni vscode.

# Neovim

Neovim meme

Neovim pertama kali diperkenalkan ke publik pada tahun 2014. Secara singkat, neovim itu sebenernya merupakan improvisasi dari vim. Buat kalian yang belum tau, vim sendiri diperkenalkan pada tahun 1991 dan merupakan improvisasi dari vi. Jadi ya bisa dianggap saling improve gitu dari vim, ke vim, hingga ke neovim (untuk sejauh ini).

Dalam melakukan konfigurasi, neovim menggunakan bahasa lua, sedangkan vim menggunakan bahasa vimscript. Penggunaan bahasa lua ini merupakan point plus karena menurut saya pribadi vimscript mempunyai syntax yang cukup susah dipahami.

Untuk menambahkan fitur pada neovim, kalian bisa menambahkan plugin. Plugin pada neovim ini ekivalen dengan extension pada vscode. Komunitas neovim tergolong lumayan besar, sehingga banyak sekali plugin yang dapat dipilih dan digunakan.

Pada dasarnya, neovim tidak menyediakan cara untuk me-manage plugin. Namun, dengan bantuan komunitas yang besar, banyak pula pilihan plugin manager yang bisa digunakan. Beberapa plugin manager yang paling terkenal adalah vim.plug, packer.nvim, dan lazy.nvim.

Untuk aktifitas programming, neovim tidak out of the box mempunyai fitur autocompletion, syntax highlighting, dan manajerial LSP, sehingga diperlukan setting manual neovim agar fitur tersebut bisa berjalan. Salah satu plugin - plugin yang bisa digunakan adalah nvim-cmp untuk autocompletion, nvim-treesitter untuk syntax highlighting, dan mason.nvim untuk manajerial LSP.

Jika kalian sudah membaca sampai bagian ini, mungkin kalian bakalan mikir: "Kok ribet banget ya pakek Neovim". Emang iya, ribet. Tapi balik lagi, karena the power of community, muncullah neovim distro yang mana merupakan pre-configure neovim, sehingga kalian bisa langsung pakek neovim tanpa perlu melakukan banyak konfigurasi diawal. Beberapa neovim distro yang paling populer adalah AstroNvim, LunarVim, NvChad, dan LazyVim.

# Pengalaman Menggunakan Neovim

Lazyvim

LazyVim

Selama menggunakan neovim, awalnya saya menggunakan neovim distro NvChad, kemudian beralih ke LazyVim. Perubahan neovim distro ini dikarenakan saya ngerasa banyak komunitas yang membicarakan LazyVim daripada NvChad, dan juga LazyVim sendiri dibuat oleh folke yang mana juga membuat package manager lazy.nvim. Pada tulisan saya selanjutnya, ketika saya bilang "neovim", saya me-refer ke "lazyvim".

Bagian kelebihan dan kekurangan merupakan bagian yang subjektif, sehingga saya coba jelaskan dahulu background diri saya:

  • Sering menggunakan vscode sebagai code editor
  • Masih pemula dalam bahasa pemrograman lua
  • Lebih dari 2 tahun menggunakan vim motion dengan vim extension di vscode

Oke, sekarang akan saya jelaskan pengalaman selama menggunakan neovim.

## Kelebihan

### Produktifitas tinggi

Neovim mengenalkan bagaimana bekerja dengan produktifitas tinggi. Kalo kata Doctor Octopus (dari Spiderman), "The power of the sun code editor in the palm of my hand". Navigasi antar file dengan telescope.nvim dan navigasi antar kata dengan flash.nvim membuat saya merasa navigasi menggunakan mouse merupakan suatu downgrade dalam evolusi manusia.

### Lebih paham bagaimana code editor bekerja

Meskipun lazyvim sudah pre-configure, tidak semua plugin dan bahasa bisa untuk langsung menggunakan LSP. Untuk itu kita perlu melakukan konfigurasi itu sendiri ketika itu tidak tersedia oleh lazyvim. Proses konfigurasi ini membuat saya menjadi tahu bagaimana suatu editor bekerja dan bahkan bagaimana suatu editor dapat berkomunikasi dengan LSP, bekerja dengan linter, dah bahkan bisa bekerja dengan formatter.

### Terlihat keren (Candaan)

Kamu bisa bilang ke teman atau rekan kerjamu: "Btw, saya pakek neovim 😎".

## Kekurangan

### Kebergantungan terhadap komunitas

Hampir semua plugin yang digunakan dalam lazyvim, merupakan buatan dari komunitas. Hal ini bisa berarti baik jika kontributor nya aktif dalam merespon issue yang ada dan juga aktif dalam mengembangkan fitur yang ada. Namun, kebergantungan pada komunitas juga bisa berarti buruk, dikarenakan bisa jadi kontributor tersebut sudah tidak aktif dalam mengembangkan plugin yang ada. Sebagai contoh, ketika saya mencoba neovim, sedang terjadi shifting dari plugin null-ls ke none-ls. null-ls sangat penting dalam penggunaan neovim, dikarenakan null-ls bisa menjadi LSP client untuk formatter. null-ls tidak dilanjut lagi dikarenakan kontributor utama nya bilang kalau sudah tidak pakai neovim.

### Membaca Dokumentasi

Neovim menggunakan bahasa lua untuk konfigurasi. Menambahkan plugin serasa seperti belajar teknologi baru dikerenakan perlunya membaca dokumentasi plugin agar kita bisa memakai plugin tersebut. Belum lagi jika dokumentasi nya ditulis dengan tidak terlalu baik.

### Terlalu sering menyentuh file konfigurasi

Skenario 1: Perfeksionis dan ingin mengubah konfigurasi. Ya memang, terkadang pengen aja ngubah konfigurasi. Kadang itu ngga nyadar sudah berjam-jam ngurusi konfigurasi file sampai saya lupa mengurus konfigurasi hidup 🥲.

Skenario 2: Tidak ingin mengubah konfigurasi, tapi ada bug. Ketika akan mengerjakan suatu task, tentunya yang perlu dilakukan adalah membuka neovim, mengerjakan task, melakukan push. Namun jika ketika membuka neovim ada update plugin, dan setelah update plugin ternyata ada bug di neovim, maka bakalan kesel banget pastinya. Tinggal bug nya nge-ganggu atau ngga. Kalo nge-ganggu ya bisa baca baca issue di github mengenai plugin tersebut, tapi jika tidak mengganggu ya bisa dibiarin aja (untuk plugin yang sering dipakek, biasanya fix bug nya bakalan secepatnya ada).

# Apakah saya akan beralih ke neovim?

Tidak. Mengapa? Menurut saya neovim masih terlalu kompleks, banyak yang perlu dipahami, banyak yang perlu dibaca, dan banyak yang perlu disesuaikan. Kekurangan yang saya sebutkan diatas tidak terjadi di vscode. Ketika saya membuka vscode, saya bisa lebih terfokus pada task yang ada, dan tidak sering membuka file konfigurasi vscode nya. Selain itu, vscode hanya menggunakan json untuk mengatur konfigurasi nya, sehingga sangatlah mudah untuk mengatur konfigurasi nya.

Namun, setelah beberapa hari kembali menggunakan vscode, saya merasa ada yang kurang dalam hal navigasi. Saya sempat kembali menggunakan neovim lagi untuk beberapa hari, sebelum akhirnya kembali menggunakan vscode. Untuk navigasi antar file, vscode mempunyai search file dengan menggunakan ctrl + p. Namun untuk navigasi antar kata, masih kalah jauh neovim. Untuk mengatasi ini, saya mencoba melakukan penyesuaian konfigurasi file pada vscode. Hasilnya, semua faktor terpenuhi, navigasi antar file dan antar kata jadi lebih smooth dan mantap 👌.

Kalau kalian pengen tahu bagaimana konfigurasi file vscode saya, kalian bisa melihat nya di repo dotfile saya. Jangan lupa kasih bintang nya ya kalo kalian suka dengan file konfigurasi vscode saya.

# Kesimpulan

Semua hal pasti ada kelebihan dan kekurangan. Sesuaikan saja dengan kebutuhan yang ada. Jika kalian punya waktu yang banyak setiap harinya dan tidak begitu masalah dengan kekurangan yang sudah saya sebutkan sebelumnya, maka kalian bisa beralih menggunakan neovim. Bagi saya, code editor yang out of the box support fitur - fitur dasar pemrograman + support vim motion, adalah code editor yang sesuai dengan saya.

Segitu dulu cerita pengalaman saya selama menggunakan neovim. Jika kalian tertarik untuk membaca hal - hal lain yang saya tulis, kalian bisa membuka halaman blog saya. Sekian dulu, salam sehat selalu 👋.