1 poin oleh GN⁺ 4 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Setelah mulai mengenal Linux pada 1997, pengalaman berpindah-pindah antara Vim dan Emacs sempat beralih ke VSCode dan IntelliJ pada 2015, lalu berujung kembali ke Doom Emacs pada 2022 di lingkungan VM Linux jarak jauh milik Snowflake
  • VSCode mempermudah belajar dan pengembangan berkat UI modern, ukuran yang ringan, konfigurasi berbasis JSON, serta integrasi LSP untuk Go dan Rust; untuk pengembangan Java, IntelliJ adalah pilihan yang lebih realistis
  • Di VM Linux lama milik Snowflake, pekerjaan berfokus pada penulisan shell script dan Bazel build file, dan dibanding lingkungan grafis jarak jauh, pekerjaan berbasis SSH lebih cocok sehingga Emacs kembali dibutuhkan
  • Doom Emacs membuat Emacs terasa seperti IDE berkat nilai bawaan yang masuk akal, integrasi bahasa, key binding bergaya Vim, menu pop-up berbasis space, dan struktur file konfigurasi yang sederhana
  • Alasan utama tetap memakai Emacs adalah kemampuan mempertahankan lingkungan pengembangan yang sama hanya dengan shell·tmux·Emacs di MacBook, laptop Linux, workstation cloud Linux, maupun server FreeBSD

Dari IDE DOS/Windows ke editor Linux

  • Mulai mengenal Linux sekitar 1997 lewat Caldera OpenLinux 1.1
  • Sebelumnya banyak memakai Borland Turbo C++ dan Visual Basic, sehingga sudah terbiasa dengan IDE matang pada masa itu
  • Lewat dua buku pengantar Linux, mulai mengenal Vim dan Emacs, dan keduanya diperkenalkan sebagai pilihan tingkat lanjut
  • Meski IDE yang dipakai sebelumnya tampak lebih lengkap, dasar penggunaan dan tutorial Vim maupun Emacs tetap dipelajari
  • Hingga sekitar 2015, Vim dan Emacs dipakai bergantian
    • Emacs lebih cocok untuk sesi coding yang panjang
    • Vim unggul saat perlu berpindah cepat antar banyak file dan mengeditnya, seperti pada pekerjaan pkgsrc

Mengapa beralih ke VSCode dan IntelliJ

  • Walau Vim dan Emacs sudah cukup berfungsi, integrasi bahasa keduanya lemah sehingga muncul minat pada editor yang lebih modern
  • Setelah pindah ke macOS, sempat mencoba Atom dan Brackets, tetapi keduanya terasa rapuh dan membebani karena fitur serta konfigurasinya terlalu banyak
  • VSCode yang muncul pada 2015 langsung terasa cocok sejak awal
    • Tampil modern dan relatif ringan
    • Pada saat itu editor konfigurasi berbasis file JSON tanpa panel pengaturan terasa lebih mudah dikendalikan
  • Saat mulai belajar Go dan Rust, integrasi LSP tiap bahasa di VSCode sangat membantu
    • Autocomplete kode
    • Penandaan error secara real-time
    • Meningkatkan kecepatan belajar
  • Saat menangani proyek Java Bazel di Google, IntelliJ adalah pilihan yang alami
    • Pernah mencoba pengembangan Java dengan Emacs, tetapi IntelliJ sangat baik sehingga secara realistis IntelliJ adalah pilihannya
  • Saat menangani codebase C++ dan mesin Windows jarak jauh di Microsoft, VSCode bersama plugin Vim juga terus dipakai
    • Banyak orang bekerja langsung di mesin jarak jauh lewat RDP
    • Menjalankan VSCode di desktop lokal lalu terhubung ke mesin jarak jauh lewat SSH jauh lebih disukai

Titik balik kembali ke Doom Emacs di Snowflake

  • Setelah pindah ke Snowflake pada 2022, pengembangan dilakukan di dalam VM Linux lama, dan pekerjaan sehari-hari berupa penulisan shell script serta Bazel build file
  • Di lingkungan ini, VSCode maupun IntelliJ tidak banyak membantu, dan karena tidak suka keterbatasan lingkungan grafis jarak jauh, kembali ke cara mengakses VM lokal lewat SSH
  • Kembali membutuhkan editor untuk sesi kerja panjang, dan pilihannya adalah Emacs
  • init.el lama berisi ratusan baris konfigurasi yang menumpuk selama bertahun-tahun, tetapi isinya tidak lagi dipahami sepenuhnya, sehingga ingin membuang semuanya dan memulai dari awal
  • Pada titik ini menemukan Doom Emacs
    • Doom Emacs adalah “distribusi” Emacs yang sudah dikonfigurasi dari awal
    • Menyediakan nilai bawaan yang masuk akal
    • Menyediakan integrasi bahasa yang telah ditentukan sebelumnya
    • Memberikan pengalaman yang familier bagi mantan pengguna Vim
    • Tidak mengklaim diri sebagai IDE, tetapi dalam penggunaan nyata terasa seperti IDE

Bagaimana Doom Emacs mengubah pengalaman penggunaan

  • Setelah mengatur Doom Emacs, Emacs kembali terasa seperti “alat yang pas” sebagaimana VSCode pada 2015
  • Banyak fitur Emacs menjadi lebih mudah ditemukan karena tampil lewat menu pop-up interaktif di balik shortcut berbasis space
  • Tetap berdampingan dengan key binding bergaya Vim sambil memberi alur shortcut yang lebih ringan bagi pergelangan tangan
  • Konfigurasi dibagi menjadi tiga file sederhana
    • config.el: menetapkan pengaturan global seperti theme dan font
    • init.el: memilih modul khusus Doom yang akan diaktifkan
    • packages.el: memasang paket yang tidak disertakan dalam Doom
  • Nilai bawaannya masuk akal, dan detail yang layak diubah diberi komentar yang cukup
  • Berkat perkembangan LSP dan fitur modern seperti tree-sitter, Emacs kini terasa seperti IDE
    • Untuk sebagian besar bahasa yang perlu ditangani, tersedia integrasi bahasa yang layak

Nilai dari memakai lingkungan pengembangan yang sama di mana saja

  • Fitur paling kuatnya adalah bisa mendapatkan lingkungan pengembangan yang sama di mesin mana pun tempat bekerja
  • Mesin yang dipakai mencakup MacBook, laptop Linux, workstation cloud Linux, hingga server FreeBSD pribadi
  • Yang dibutuhkan hanyalah shell, tmux, dan Emacs
  • Saat bekerja di berbagai mesin, lingkungan yang sama dan muscle memory yang konsisten memberi nilai langsung pada produktivitas
  • Karena kebutuhan ini, Emacs menjadi alat yang lebih penting daripada sebelumnya

Apakah Doom Emacs melakukan terlalu banyak hal?

  • Ada keluhan bahwa Doom Emacs “melakukan terlalu banyak hal”, tetapi justru itulah yang membuatnya berguna
  • Muncul juga pemikiran apakah suatu saat konfigurasi bisa disederhanakan untuk lebih mempelajari Emacs itu sendiri
  • Arus masuknya berbagai modul pihak ketiga modern ke paket bawaan Emacs turut memperkuat pertanyaan ini
  • Belakangan ini juga tertarik mencoba distribusi seperti Bedrock atau Emacs Solo
  • Namun energi aktivasi yang dibutuhkan untuk berpindah cukup tinggi, dan bahkan jika jalur itu dipilih, pertanyaan tentang mengapa tidak sekalian memakai Emacs “raw” pada akhirnya akan muncul lagi

Jarak emosional terhadap Elisp, Org mode, dan Magit

  • Karena Emacs berbasis Elisp, masih belum sepenuhnya memahami bagaimana hal itu bisa sangat mengubah workflow banyak orang
  • Memang mungkin menerapkan lebih banyak logika dan workflow di dalam Emacs, tetapi hampir semua hal sudah bisa ditangani dengan mudah lewat shell script
  • Script terasa lebih sesuai dengan semangat Unix dari sudut pandang “Unix is my IDE”
  • Tidak menyukai bahwa Org mode dan Magit terikat di balik Emacs alih-alih menjadi aplikasi mandiri
  • Selama kebutuhan untuk terus bekerja di berbagai mesin jarak jauh masih ada, Emacs akan tetap menjadi alat yang penting

1 komentar

 
GN⁺ 4 jam lalu
Pendapat di Lobste.rs
  • Saya menulis ini karena topiknya terlalu lucu
    Bukan karena pertanyaan tertentu, melainkan karena saya melihat orang-orang berpangkat tinggi di perusahaan “menemukan” alat baris perintah saat memakai agen coding berbasis CLI, lalu mencoba menunjukkan betapa bergunanya penemuan baru itu
    Sejauh ini contoh utamanya adalah tmux, dan sekarang tinggal menunggu mereka sadar bahwa Vim dan Emacs juga ada
    Alat-alat seperti ini sudah lama ada, dan kalau Anda bertanya pada “pengembang 10x tingkat lanjut” di perusahaan, kemungkinan mereka memang memakainya
    Meski begitu, sering kali diperlakukan seperti “haha, itu artefak kuno. ayo ke web!!11” Mungkin ada alasan mengapa para pengembang itu tetap memakai alat-alat ini ;P

    • Satu hal bagus dari “gelembung hasil generatif berkualitas rendah” adalah bahwa teks biasa kembali menjadi medium yang valid dan penting
      Termasuk CLI menjadi lebih umum, dan banyak pengetahuan yang sebelumnya hanya diwariskan secara lisan kini mulai didokumentasikan. Tentu dengan syarat bahwa pengetahuan itu dibuat oleh manusia
      Saya harap bagian-bagian baik seperti ini tetap bertahan setelah kita melewati masa canggung yang sekarang
    • Sebagian besar pengguna Emacs mungkin memakai GUI. Saya tidak punya angka, tapi menurut saya jumlahnya sangat dominan
  • Saya juga termasuk yang baru mulai belajar
    Beberapa tahun lalu saya mencoba Doom Emacs, tetapi rasanya lambat sampai mengganggu karena latensinya, jadi saya langsung mundur. Saya tidak tahu apakah itu kini sudah jadi masa lalu berkat kompilasi native; masih sulit menilainya karena saya masih memakai Emacs bawaan tanpa konfigurasi. Saya memakai 30.2 dari Nixpkgs, dan sepertinya kompilasi native aktif secara default
    Saya tidak terlalu tertarik pada hal seperti menulis email di Emacs; yang saya butuhkan adalah editor yang bisa saya bentuk sesuai keinginan. Akan lebih bagus kalau nanti juga bisa dipakai saat saya ingin belajar Lisp, yang kemungkinan besar akan jadi Janet. Helix masih belum punya plugin, jadi untuk Lisp pilihannya hampir tidak ada. Saya juga suka filosofi “semuanya adalah teks”, meski apakah itu benar-benar cocok untuk saya masih harus dilihat
    Untuk dipelajari pada 2026, ada juga sisi yang terasa memberatkan. Karena pengetahuan implisit yang menumpuk selama puluhan tahun, ketika membaca tulisan tentangnya nama paket, nama perintah, dan semacamnya bermunculan terus, sehingga terasa melelahkan padahal saya cuma ingin melakukan $THING. Jadi saya mengambil jalur belajar yang lebih terpandu dengan Mastering Emacs
    Key binding bawaannya juga cukup aneh. Saya tahu semuanya bisa dipetakan ulang, tetapi itu menambah pekerjaan. Selain itu, saya membuat sendiri keyboard ergonomis split, dan firmware-nya juga sudah saya sesuaikan dengan gaya kerja ala Vim/Helix yang tidak menjadikan tombol modifier sebagai inti alur kerja
    Saya berpindah-pindah antara MacBook Pro, PC, dan keyboard kustom, jadi saya perlu menemukan key binding yang konsisten agar otak saya tidak meleleh. hjkl ada di posisi yang sama pada semua keyboard, tetapi tombol seperti Ctrl tidak

    • Jika key binding terasa sulit dan Anda lebih terbiasa dengan gaya Vim, evil layak dilihat
      Anda mungkin akan mendengar ceramah bahwa evil itu untuk para pengungsi Vim yang tidak mau belajar “injil sejati Emacs”, tetapi injil sejati Emacs® justru adalah memakainya dengan cara yang paling cocok untuk diri sendiri
      Saya memakai Emacs sejak 1998 dan sama sekali bukan penggemar Vim. Sekitar 2011 saya mulai punya sedikit masalah RSI di pergelangan tangan, lalu mencoba paket-paket yang bisa menguranginya, dan selama beberapa tahun cukup banyak memakai god mode, tetapi tetap terasa canggung
      Lalu, untuk “membuktikan bahwa itu tidak akan berhasil”, saya mencoba evil meski seumur hidup belum pernah memakai Vim, dan dalam seminggu saya sudah sefasih saat memakai god mode, lalu sebulan kemudian saya malah lebih cepat daripada saat memakai key binding Emacs resmi
      Itu bukan berarti key binding bawaan itu salah. Pergelangan tangan saya memang kurang baik, jadi pengalaman saya bisa berbeda. Mungkin boon atau meow juga lebih cocok
      Tetapi jika evil cocok untuk Anda, tidak ada alasan sedikit pun untuk merasa bersalah. Emacs memang bisa mengubah penggunanya, tetapi jauh lebih besar lagi, Emacs berubah demi penggunanya
    • Doom benar-benar bisa terasa sangat berbeda tergantung bagaimana Anda mengonfigurasinya. Dalam hal itu pun, seiring waktu, keadaannya terus membaik
      Yang terbaik memang meraciknya sendiri, tetapi itu banyak kerja, dan proyek seperti Doom jelas sangat memudahkan masuknya pengguna baru
    • Justru fakta bahwa key binding bawaannya aneh itulah yang saya sukai dari Doom Emacs
      Dulu saya cukup tahu key binding bawaan Emacs, tetapi tidak pernah terasa alami, dan terutama sulit ditemukan sendiri
      Doom Emacs memakai prefix key SPC untuk hampir semua tugas, dan kalau Anda berhenti sebentar akan muncul menu sementara yang menjelaskan pelengkapan yang tersedia, yang menurut saya sangat bagus. Itu membantu menemukan fitur yang sebelumnya tidak saya ketahui, dan juga tidak bentrok dengan mode modal Vim
      Karena itu, konfigurasi dengan mode Vim untuk mengedit teks dan kombinasi SPC untuk tugas-tugas Emacs terasa seperti keseimbangan yang bagus
      Key binding bawaan Emacs juga punya kelebihan. Tombol manipulasi teks dasarnya dipakai bersama readline, bahkan juga macOS. Tombol pengelolaan teks gaya Emacs di macOS bahkan menular ke VSCode dan tidak bentrok dengan tombol clipboard standar, jadi VSCode di macOS terasa cukup bagus
      Setelah pindah ke Windows dan Linux, saya benar-benar sulit tahan memakai VSCode tanpa plugin Vim
    • Jika Anda datang dari Helix, meow juga layak dilihat
      Katanya ia menyediakan fitur yang mirip Kakoune dan Helix secara bawaan, serta berusaha untuk tidak terlalu mengganggu. Saya sendiri belum benar-benar memakai keduanya, jadi ini berdasarkan apa yang saya dengar
      Menurut saya, masalah dengan paket evil yang direkomendasikan itu adalah ia mengambil alih terlalu banyak key binding dan kurang cocok dengan paket eksternal, sehingga sering perlu banyak paket “adapter”
      Setelah sekali dikonfigurasi, meow cenderung tidak terlalu merepotkan
  • Saya sudah memakainya selama 33 tahun, dan ia melakukan semua yang saya butuhkan dari editor maupun IDE

  • Sempat bolak-balik antara Doom dan (n)vim, tetapi belakangan ini sebagian besar sudah menetap di Neovim
    Masalah utama yang saya alami saat memakai Emacs, lucunya, justru karena perawatannya menyakitkan. Saat Doom di-upgrade, sinkronisasi paket sering kacau sehingga yang tersisa cuma opsi nuklir: instal ulang total
    Tentu saja mungkin saya bisa memperbaikinya dengan cara yang lebih “tidak seperti pemula”, tetapi pada titik tertentu saya jadi hanya ingin alatnya sekadar bekerja. Saat ada pekerjaan yang harus diselesaikan, konfigurasi rusak dan situasi terlalu bergantung pada editor seperti ini sulit ditanggung
    Meski begitu, saya tetap merindukan org-mode dan cara navigasi Emacs secara keseluruhan
    Setiap kali mencoba solusi yang “modern” seperti VSCode atau CLion, saya justru mengalami masalah yang sama lebih banyak lagi. Tidak ada fitur aksesibilitas yang layak, jadi alih-alih navigasi murni dengan keyboard saya harus klik-klik dengan canggung, dan perilaku “Vim”-nya juga tidak lengkap dibanding yang asli
    Alasan saya memakai Neovim akhir-akhir ini sederhana: karena ia memang bekerja dengan baik. Sebenarnya, kalau saya menyuruh coding agent memperbaiki konfigurasi selama 2 menit, mungkin saya juga bisa mengatakan hal yang sama tentang Emacs saya sekarang (:

    • Saya sudah beberapa kali mencoba fitur update milik Doom, tetapi selalu muncul masalah
      Sekarang, setiap kali ingin upgrade atau memang perlu karena upgrade Emacs, saya hapus dengan rm -rf ~/.emacs.d/ lalu menyiapkan Doom lagi dari awal. ~/.doom.d/ saya simpan dalam version control
      Dengan alur ini, tidak ada masalah
  • Saya ini orang aneh yang memakai Emacs untuk pengembangan, menulis, sampai email, dan sudah begitu sekitar 15 tahun, tetapi tetap saja saya tidak pernah menemukan waktu atau kelonggaran untuk belajar elisp
    Bahkan saat menyentuh file konfigurasi, sebenarnya saya juga tidak terlalu paham apa yang sedang saya lakukan. Meski begitu, ini tetap lingkungan paling produktif bagi saya, dan itu menunjukkan betapa hebatnya editor ini :-)
    Membaca Mastering Emacs dengan serius sudah ada di daftar tugas saya selama memalukan lamanya

    • Saya juga hampir sama. Karena sering memperbaiki konfigurasi dan mengedit ini-itu, saya jadi tahu sedikit elisp secara osmosis, tetapi jumlah yang benar-benar saya tahu sangat sedikit sampai agak memalukan
    • M-x high-five
      Dalam kasus saya juga, saya hanya memakai sangat sedikit paket dan menggunakan key binding bawaan. Sebenarnya tidak ada fungsi high-five, tetapi siapa tahu ini akhirnya jadi momen saya untuk benar-benar menggali elisp
  • Saya tidak suka rendering Vim dan juga sudah lelah dengan Electron/VSCode dan sejenisnya, jadi sekitar 2 tahun lalu saya pindah ke Emacs
    Saya sempat tergila-gila pada avy dan beberapa plugin lompatan, tetapi yang membuat saya bertahan dan sampai sekarang menjadikannya alat utama untuk perubahan kode adalah magit

  • Perusahaan pelanggan yang saya tangani di pekerjaan bergantung pada pemanfaatan file CSV yang sangat besar untuk seluruh bisnisnya, tetapi di sana tampaknya tidak ada yang tahu cara membuka atau memeriksa data dalam file 1GB
    Mereka bahkan tidak tahu perintah head untuk meminta header CSV

  • Setelah bertahun-tahun memakai X/GUI, barusan saya beralih ke -nw
    Saya hanya memakai versi Pgtk saat presentasi