- Neovim membuat penyuntingan kode dijalani bukan sebagai mengetik cepat, melainkan sebagai loop berulang yang berisi berpindah, mengubah, menghapus, menyusun ulang, dan memeriksa hasil pengujian
- Tata bahasa penyuntingan Vim mengurangi gesekan dalam edit berulang dengan menggabungkan operasi berbasis unit makna seperti
ci", dap, ., macro, dan text object
- Neovim tidak memaksakan explorer, terminal, atau panel Git, dan membuat pengguna bebas memilih Telescope, Fugitive, LSP, dan lainnya dengan buffer sebagai pusatnya
- Konfigurasinya bisa dimiliki sebagai file yang tersimpan di Git, dan tetap menjadi bagian dari sistem yang bekerja bersama shell, tmux, ripgrep, git, dan language server
- Neovim telah dimodernisasi dengan Lua, LSP bawaan, Treesitter, dan Lazy.nvim, tetapi nilai intinya adalah perilaku yang dipelajari akan terus menumpuk sehingga workflow berevolusi secara langsung
Rasa bekerja yang berlanjut dari Vim ke Neovim
- Penggunaan Vim dimulai pada 2011, dan pada awalnya bahkan menyalin
.vimrc atau alasan j menggerakkan kursor alih-alih memasukkan karakter pun belum dipahami
- Minggu pertama terasa berat dan bulan pertama terasa asing, tetapi setelah model Vim mulai akrab, editor lain terasa seolah memiliki lapisan penyangga antara kode dan penggunanya
- Berbagai editor seperti VS Code, JetBrains IDE, Sublime, Atom, dan Zed pernah dipakai; tool JetBrains sangat kuat, dan VS Code sukses karena cukup baik untuk hampir semua orang serta mudah diperluas
- Meski begitu, alasan Neovim tetap dipakai adalah karena ia bergerak mengikuti cara kerja penggunanya dan secara langsung mendukung loop berulang dalam penyuntingan kode
Memperlakukan penyuntingan bukan sebagai shortcut, melainkan sebagai bahasa
- Penyuntingan kode bukan soal mengetik cepat, melainkan lebih dekat ke pekerjaan berulang seperti berpindah, melakukan perubahan kecil, menghapus abstraksi yang keliru, menyusun ulang fungsi, memindahkan file, dan memeriksa pengujian serta diagnosis
- Kebanyakan editor memperlakukan teks sebagai dokumen dan keyboard sebagai perangkat input, tetapi Vim memperlakukan penyuntingan sebagai tata bahasa (grammar)
ci" mengubah isi di dalam tanda kutip, dap menghapus paragraf, dan . mengulangi perubahan terakhir
- Macro dapat diajarkan satu rutinitas kecil lalu diterapkan berulang ke seluruh file, dan text object memungkinkan operasi diterapkan pada unit makna alih-alih jumlah karakter
- Begitu tata bahasa Vim melekat di tangan, kebutuhan untuk menyeret kode dengan mouse, mengeklik sidebar, atau membuka command palette untuk tugas yang dilakukan puluhan kali setiap hari pun berkurang
- Tugas yang sering dilakukan berubah menjadi gerakan kecil yang langsung, dan kebisingan editor juga berkurang
Neovim yang tidak memaksakan workflow
- Editor yang berpusat pada GUI cenderung memiliki pandangan tetap tentang posisi dan bentuk explorer, terminal, panel Git, dan debugger, dan seiring waktu editor bisa berubah seperti kokpit
- Neovim dimulai dari buffer, dan pengguna yang menentukan apa saja yang diletakkan di sekelilingnya
- Jika perlu file tree bisa ditambahkan, dan untuk fuzzy search bisa memilih alat yang cocok seperti Telescope atau fzf-lua
- Untuk integrasi Git bisa memakai Fugitive, dan LSP, diagnosis, formatting, snippet, Treesitter, test runner, serta autocomplete dapat tetap ditangani tanpa berubah menjadi dashboard Electron yang lambat
- Kecepatan bukan hanya soal waktu startup, tetapi juga soal kepercayaan
- saat tombol ditekan, editor harus langsung merespons
- saat membuka file besar, seluruh UI tidak boleh tersendat
- saat terhubung lewat SSH, pairing di tmux, atau mengedit di jendela terminal kecil, rasa editor yang dipakai setiap hari harus tetap terjaga
- Untuk proyek lokal, server jarak jauh, perubahan konfigurasi cepat, aplikasi Rails besar, skrip shell kecil, hingga menulis Markdown, semua bisa memakai pergerakan yang sama, perintah yang sama, dan muscle memory yang sama
- Konsistensi seperti ini terakumulasi sepanjang karier
Konfigurasi yang bisa dimiliki dan alat yang tetap menjadi bagian dari sistem
- Konfigurasi Neovim adalah file yang ada di Git, sehingga bisa dibaca sendiri, dirusak sendiri, dan bahkan separuhnya dihapus saat sadar ada plugin yang tidak diperlukan
- Tidak bergantung pada database konfigurasi misterius, status akun sinkronisasi yang hanya dipahami setengah-setengah, atau extension yang bertingkah aneh di latar belakang karena perubahan checkbox beberapa rilis lalu
- Banyak editor modern ingin menjadi tempat terjadinya segalanya, tetapi Neovim puas tetap menjadi bagian tajam dari sistem yang lebih besar
- Ia tidak berusaha menggantikan shell, melainkan bekerja bersama tmux, ripgrep, git, language server, formatter, linter, dan test runner
- Fakta bahwa ia tidak perlu memiliki seluruh meja kerja juga menjadi salah satu alasan Neovim bertahan lama
- Sejak 2011, banyak editor, ekosistem extension, tema, marketplace, dan panel AI telah muncul, tetapi Vim sudah menjadi alat yang tua, dan Neovim memodernisasi bagian yang perlu tanpa meninggalkan alasan mengapa orang menganggapnya penting
Modernisasi dan imbal hasil belajar yang bertahan lama
- Lua membuat konfigurasi menjadi lebih baik, dan ekosistem plugin juga meningkat pesat
- LSP bawaan membawa fitur IDE ke editor tanpa memberi kesan membengkak
- Treesitter memodernisasi syntax highlighting dan pemahaman kode, dan Lazy.nvim membuat pengelolaan plugin menjadi cepat dan sederhana
- Daya tarik utama Neovim adalah apa yang dipelajari tetap berguna seiring waktu
- mempelajari satu motion akan terus membantu
- menulis macro membuat edit yang membosankan menghilang
- menemukan text object membuat refactoring yang merepotkan jadi mudah
- menyesuaikan satu perintah bisa membuatnya menjadi bagian dari tangan
- Editor tidak menjadi lebih baik karena perusahaan merilis sidebar baru, melainkan karena penggunanya makin mahir memakainya
- Produktivitas sulit diukur hanya dengan “hemat 5 detik di sini”, dan lebih terletak pada berkurangnya gesekan dalam ribuan edit kecil
- Saat berpindah antara kode, pengujian, git diff, dan hasil pencarian, pengguna bisa tetap fokus pada masalah tanpa merasa seperti pindah ke ruangan lain
- Neovim sangat dapat diprogram, sehingga alih-alih menerima default apa adanya, pengguna membentuk workflow mereka sendiri secara langsung
- Jika sesuatu yang tidak nyaman terulang dua kali, biasanya itu bisa diperbaiki dengan mapping, perintah, fungsi Lua kecil, plugin yang lebih baik, atau justru menghapus plugin
- Konfigurasi berevolusi mengikuti cara kerja yang sebenarnya, dan ketika perubahan yang diinginkan sudah jelas, hanya sangat sedikit hal yang berada di antara pikiran dan penyuntingan
- Selama 15 tahun, bahasa, framework, performa mesin, dan tren industri telah berubah, tetapi Vim dan Neovim tetap menjadi editor utama tempat pekerjaan terbaik terus dilakukan
1 komentar
Opini Lobste.rs
Saya mulai memakai vim 12~14 tahun lalu karena butuh editor ringan yang menampilkan kode tepat di depan saya
Saya mulai belajar tanpa mouse, dan belakangan senang mengetahui bahwa Mitchell Hashimoto juga belajar vim dengan cara yang mirip
Saya mengenal neovim lewat TJ DeVries(https://www.youtube.com/@teej_dv) dan kanal YouTube-nya, serta melihat dia mengutak-atik berbagai proyek seperti neovim dan telescope
Perpindahan ke Lua terasa alami, dan saya memang sudah menyukai bahasa kecil itu
Plugin pertama yang saya pakai adalah treesitter dan telescope, dan sampai sekarang saya masih memakai neovim bersama beberapa plugin kecil
neovim tidak pernah rusak buat saya, dan memang bekerja dengan baik. Saya tidak memakai plugin LLM, dan menurut saya ekosistem itu tidak harus ada di dalam editor
Saya berharap timnya terus menyediakan editor kode yang ringan dan fokus
Jadi ketika neovim menambahkan Lua, itu terlihat sangat menarik
Sekitar 20 tahun lalu, saya pernah memikirkan apa saja yang membuat keseharian terasa menyenangkan, terlepas dari sekadar produktif
Di urutan teratas daftar itu ada linux dan vim
Apa pun pekerjaan saya, dan tumpukan teknologi apa pun yang saya gunakan, keduanya menjamin lingkungan kerja yang ergonomis, familier, dan nyaman
Saya mulai belajar vim lebih dari sekadar
:wqsaat wawancara kerja pada 2009. Semua karyawan memakai vim, jadi kalau ingin berkolaborasi dengan mereka memang tidak ada pilihan lainBeberapa bahkan menonaktifkan tombol panah
Sebelumnya, pengalaman saya dengan editor terminal hanya sebatas memakai
picosaat kuliah, dan biasanya saya memakai editor GUI yang sedang populer waktu ituUntungnya saya diterima kerja, dan sejak saat itu saya terus memakai vim
Belakangan saya sadar cara berpikir ala vim meresap ke bagian lain dari kehidupan saya di dunia perangkat lunak
Mungkin dimulai dari saat saya membuat keyboard virtual dengan Hammerspoon di macOS untuk submap pengelolaan jendela, dan akhir tahun lalu mencoba Arch Linux membuat manajemen jendela tiling jadi sangat mudah
Beberapa waktu lalu saya beralih ke neovim dan menurut saya itu benar-benar luar biasa
Saya tahu ada banyak lelucon dan perdebatan soal editor, tetapi selain beberapa pengecualian, saya masih sulit memahami bagaimana orang yang menulis kode sebagai profesi tidak memakai vim, emacs, atau editor serupa
Dalam profesi apa pun, penting memilih alat terbaik untuk pekerjaan itu, dan memperlakukan penyuntingan seperti bahasa adalah keunggulan besar dalam perangkat lunak
Soal bagian “sulit memahami” di atas, perilaku, pintasan, dan plugin editor seperti VS Code juga sangat berguna
Dokumentasi VS Code layak dibaca dengan baik, dan memang bisa melakukan banyak hal
Dan bagi sebagian orang, termasuk saya, memindahkan kursor ke posisi sembarang dalam buffer dengan mouse lalu memilih rentang sembarang itu sederhana dan cukup cepat
KISS memang tepat
Karena editor lain sering kali merupakan alat yang lebih baik untuk pekerjaan tersebut
Untuk Python, yang paling sering saya pakai belakangan ini, saya merasa PyCharm adalah alat yang lebih baik daripada mereka
Untungnya ada plugin IDEAVim yang sangat bagus, jadi memori otot tetap terjaga
Kalau dipakai di Mac, pintasan sistem tidak bentrok dengan pintasan vi, jadi kita bisa memilih yang sesuai konteks, dan itu juga kelebihan
Saat memakai C++, saya menganggap CLion adalah alat yang lebih baik, tetapi IDEAVim juga berjalan di sana
Untuk pekerjaan serabutan yang kategorinya tidak jelas, saya sering memakai zed, dan emulasi vim-nya juga cukup bagus
Saat masuk ke sistem jarak jauh, tentu menyenangkan punya editor terminal yang bagus, tetapi ketika GUI penuh bisa dipakai, saya tidak terlalu menyukai editor terminal
Saya memang suka penyuntingan modal, tetapi kalau tidak perlu membuang memori otot, menurut saya ada alasan yang cukup kuat untuk memakai editor GUI
VS Code, dalam keadaan default saja, sudah cukup bagus untuk banyak kegunaan
Sudah ada pencarian file ctrl-p, jendela terpisah, penyorotan sintaks, dan dukungan bahasa populer
Saya berharap neovim setidaknya menyediakan hal seperti ctrl-p secara bawaan, dan menjadi semacam Linux Mint versi editor ala vim yang menurunkan kekhawatiran keamanan serta hambatan konfigurasi
Saya paham keinginan untuk memakai rasa editor yang sama seperti yang dipakai setiap hari saat pair programming dalam sesi tmux di mesin yang diakses lewat SSH, atau saat memperbaiki masalah di jendela terminal kecil
Saya sudah dibayar untuk menulis banyak kode lewat screen/vim di atas SSH, dan sebelum era gangguan terus-menerus seperti Slack berbunyi kapan saja, itu sebenarnya sangat produktif
Debugger visual seperti di Visual Studio atau IDE Jetbrains seperti CLion dan Rider adalah satu hal yang belum pernah saya temukan pengganti bagusnya di editor vim mana pun
Itu punya kekuatan yang lebih mudah diakses daripada sesuatu seperti cgdb
Kecepatan bukan cuma soal waktu startup, dan neovim juga bagus dalam hal itu, tetapi keluar dari neovim bawaan terasa jelas lebih lambat daripada vim
Mungkin tidak terlalu lama, tetapi di lingkungan saya perlu sekitar 1 detik
Saya suka model vim. Penyuntingan modal hanya bagian kecil darinya, dan hal yang membuat saya menilai vim lebih tinggi daripada helix atau IDE biasa adalah kemampuannya untuk dipelajari secara bertahap
Awalnya memahami key binding dan pengaturan opsi, lalu menambahkan kondisi ke konfigurasi kalau ada sesuatu yang tidak berjalan di Windows, kemudian menulis autocmd dan fungsi, dan akhirnya memperluas semua yang sudah dipelajari tadi menjadi plugin kecil
Tapi saya juga tidak benar-benar mencintai vim atau neovim
vim memiliki bug aneh yang sama selama puluhan tahun tanpa diperbaiki, dan neovim memang memperbaiki banyak bug tetapi juga membawa bug lain
Dosa terbesar neovim adalah merusak API Lua di setiap pembaruan
Saya lelah melihat pemberitahuan deprecation setiap kali menjalankannya, lalu harus memperbaiki konfigurasi sebelum bisa melakukan hal yang sebenarnya ingin saya lakukan
Akan lebih baik kalau setidaknya sebagian fitur baru itu tidak eksklusif untuk Lua
Kalau tidak begitu, saya bisa saja terus memakai vimscript dan puas dengan kompatibilitas yang sudah terjaga lebih dari 20 tahun