Tutorial Emacs untuk Pemula

Emacs adalah teks editor yang telah menghipnotis banyak pengguna di seluruh dunia selama beberapa dekade (termasuk penulis 👋). Ia adalah sahabat setia bagi para pengembang perangkat lunak, programmer, peneliti (akademisi), atau siapa pun yang sering bergulat dengan penyuntingan teks (text editing). Jadi, jika kamu belum pernah mengenal Emacs sebelumnya, mari kita mulai petualangan ini!

bermain tetris di emacs
emacs - editor serba bisa

Di dalam serial ini, kami akan memulai dari awal, memandu Anda melalui dasar-dasar penggunaan Emacs, hingga ke tingkat lanjut yang akan membuatmu bersemangat untuk menggali lebih dalam lagi. Kami akan berbicara tentang sejarah Emacs, cara menginstalnya, dan bagaimana memanfaatkan fitur-fitur canggihnya untuk meningkatkan produktivitas Anda.

Mungkin, bagi Anda yang belum pernah bersentuhan sama sekali dengan dunia text-mode, semua yang dijelaskan di sini terasa ribet ya, ndak ada klik sana klik sini, tapi yakinlah kalau Anda sudah terbiasa, memegang mouse itu sebenarnya pemborosan waktu yang luar biasa... hahaha... Siapkan jari kelingkingnya, karena nanti akan sering mencet tombol Ctrl sebelah kiri... 😆

Warning ahead... Tulisan ini mungkin akan sangat panjang (kurang lebih 5000 kata), meskipun yang dijelaskan baru sebatas pengenalan, itu pun belum semua. Juga... tulisan ini akan lebih mudah dinikmati dengan device laptop atau tablet, kalau dipaksa pake layar kecil (smartphone),  jadinya akan kurang nyaman.

Berikut ini adalah struktur dari tulisan ini, silakan lompat ke bagian yang Anda inginkan kapan saja:

1. Pengenalan tentang Emacs

2. Menginstall Emacs

3. Antarmuka Pengguna (User Interface) Emacs

4. Memulai Emacs

5. Mode dan Fungsionalitas Tambahan

6. Penggunaan Ekstensi (packages) dalam Emacs

7. Kustomisasi Emacs

8. Productivity Tips

9. Penutup

10. Referensi Lanjutan

    11. Daftar Pustaka


    Kesepakatan Penulisan

    Sebelum kita mulai,  mari kita buat kesepakatan terlebih dahulu, biar tutorial ini lebih mudah dipahami. Bahwa di Emacs memang ada berbagai cara mengoperasi key binding, ada yang harus ditekan bersamaan, ada yang cukup ditekan tanpa kombinasi tombol Ctrl. Tabel berikut ini sebagai panduan awal agar Anda tidak bingung membaca tutorial ini nantinya.

    Tanda Keterangan
    C Tombol Ctrl
    M Tombol Alt
    S Tombol Shift
    - Tanda hubung, artinya ditekan bersamaan (tanpa dilepas)
    Ret Tombol Enter
    C-x Tekan Ctrl jangan dilepas kemudian tekan tombol x sekali
    C-x C-f Tekan Ctrl, tahan, tekan tombol x sekali, (Ctrl masih ditahan), kemudian tekan tombol f sekali
    C-x r l Tekan Ctrl, tahan, tekan tombol x sekali, lepas semua, tekan r, lepas, kemudian tekan l, trus lepas

    Selalu perhatikan mini buffer ya... karena ada keterangan di sana kita baru ngapain

    Maafkan sebelumnya kalau ada salah penulisan atau kurang jelas atau kurang lengkap, atau model penulisan yang tidak konsisten, tulisan ini akan saya coba update terus...

    Okay.... mari kita mulai....

    Pengenalan tentang Emacs

    Emacs adalah salah satu dari teks editor yang paling handal dan sangat disukai oleh para pengembang perangkat lunak, programmer, peneliti, dan pengguna yang menginginkan alat pengeditan teks yang fleksibel dan ringan. Emacs telah ada selama beberapa dekade dan memiliki sejarah yang panjang. Dalam bab ini, kita akan membahas beberapa konsep dasar tentang Emacs untuk memberi Anda pemahaman yang lebih baik tentang mengapa editor ini sangat penting dalam dunia text editing.

    Sejarah Singkat Emacs

    Emacs pertama kali dikembangkan oleh Richard Stallman pada tahun 1976 di Laboratorium Kecerdasan Buatan MIT. Nama "Emacs" adalah singkatan dari "Editor MACroS." Salah satu fitur paling menarik dari Emacs adalah kemampuannya untuk disesuaikan dan diperluas dengan ekstensi (packages), sehingga memungkinkan penggunanya untuk melakukan hampir semua jenis tugas pengeditan teks (yang kompleks) dan bahkan bisa lebih dari itu. Emacs bisa digunakan untuk web browsing (text mode), email client, putar lagu, bermain game seperti tetris, dan banyak hal lagi.

    Emacs dibuat menggunakan bahasa pemrograman Lisp, sehingga apabila nanti kita ingin meng-kustomisasi lebih jauh, sedikit banyak harus belajar bahasa ini. Tapi meskipun menggunakan mode standar pun masih cukup powerful kok...

    Mengapa Emacs Penting

    Ada beberapa alasan mengapa Emacs menjadi pilihan utama bagi banyak pengembang perangkat lunak:

    1. Mudah dikustomisasi: Anda dapat mengkonfigurasi Emacs sesuai dengan preferensi Anda, membuat shortcut pribadi, dan menyesuaikan tampilan editor dengan mudah.
    2. Dukungan untuk Banyak Mode: Emacs memiliki mode khusus untuk berbagai bahasa pemrograman dan tugas khusus, yang membantu meningkatkan produktivitas Anda saat bekerja pada proyek-proyek berbeda.
    3. Penggunaan Keyboard: Emacs sepenuhnya dioptimalkan untuk penggunaan keyboard, yang memungkinkan Anda bekerja lebih cepat tanpa perlu menggunakan mouse.
    4. Ekosistem Packages: Ada ribuan ekstensi (package) yang tersedia untuk Emacs yang dapat meningkatkan fungsionalitasnya secara drastis.

    Pendapat saya pribadi, menguasai text editor berbasis text seperti Vim atau Emacs ini rasanya cukup penting, apalagi kalau Anda bekerja dengan remote server (via ssh) misalnya, yang biasanya berbasis text, mau ndak mau kalau mau setup atau ubah konfigurasi harus menggunakan text editor berbasis text mode.

    Emacs sendiri bisa dijalankan dalam GUI maupun text mode. Dalam tutorial ini disarankan menggunakan yang versi GUI agar lebih mudah diikuti. Kalau sudah mulai mahir, nanti bisalah mencoba yang versi non GUI.

    Dengan pemahaman awal tentang Emacs ini, mari mulai dengan instalasi dan mengenal antarmuka pengguna untuk memahami dasar-dasar penggunaannya.

    Menginstall Emacs

    Emacs dapat diinstal di berbagai sistem operasi, berikut ini cara install pada beberapa sistem operasi yang sering digunakan.

    1. Linux (Ubuntu)

    Untuk Ubuntu dan beberapa varian distro Debian lainnya:

    
    sudo apt update
    sudo apt install emacs
        

    Setelah itu kita dapat membuka Emacs dengan mengetikkan perintah emacs di Terminal atau Anda dapat mencarinya dalam menu aplikasi. Oh iya, penulis sendiri menggunakan sistem operasi Ubuntu 22.04.3 LTS.

    2. Mac OS

    Untuk macOS, Anda dapat menggunakan package manager Homebrew untuk menginstal Emacs. Jika belum memiliki Homebrew, silakan install dulu dengan menggunakan perintah berikut:

    
    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
        

    Kemudian, instal Emacs dengan perintah:

    
    brew install emacs
        

    Setelah selesai, Emacs akan terinstal di macOS Anda. Selanjutnya buka dengan menjalan perintah emacs di terminal.

    Note: bagian ini tidak terverifikasi ke-sahih-annya ya... karena penulis tidak memiliki Mac.

    3. Windows

    Untuk sistem operasi Windows, Anda dapat mengunduh Emacs installer dari situs resmi Emacs di https://www.gnu.org/software/emacs/download.html.

    Pilih versi terbaru dan unduh install yang sesuai dengan arsitektur komputer Anda (32-bit atau 64-bit).

    Jalankan installer yang sudah diunduh, dan ikuti langkah-langkah instalasi yang ditampilkan pada layar.

    Setelah selesai, Anda dapat membuka Emacs dari menu Start (Win) atau dengan mencarinya di pencarian Windows.

    Antarmuka Pengguna Emacs

    Emacs memiliki beragam elemen utama yang memberikan fleksibilitas dalam penyuntingan teks dan untuk fungsi navigasi. Memahami elemen-elemen ini akan membantu Anda dalam menggunakan Emacs dengan lebih efisien.

    1. Buffer

    gambar buffer di emacs
    tampilan buffer emacs

    Buffer adalah area kerja utama di Emacs. Setiap buffer dapat berisi teks dari berkas yang berbeda. Kamu dapat membuka banyak buffer sekaligus. Buffer yang aktif ditampilkan di jendela utama Emacs. 

    Definisi pribadi saya, buffer ini mirip tab kalau di editor lain, meskipun mungkin sifatnya agak berbeda. Kita dapat berpindah antar buffer, atau bahkan memecah layar secara horisontal atau vertikal, dengan masing² bagian menampilkan buffer yang berbeda. Dalam tulisan lain mungkin akan penulis jelaskan tersendiri.

    Secara default, setiap kali kita membuka Emacs, maka buffer yang tampil adalah seperti yang kita lihat di skrinsut di atas. Kita sebenarnya dapat meng-custom buffer mana yang akan kita pilih setiap kali kita menjalankan Emacs.

    Selain buffer, Emacs memiliki yang namanya Frame, kalau kita menyebutnya windows, biar tidak bingung, pembahasan ini akan dipisah saja dalam tulisan lain.

    2. Mode

    tampilan emacs mode python
    tampilan emacs mode python


    Mode
    adalah aspek penting dari Emacs yang memungkinkan pengguna untuk mengedit teks dengan cara yang lebih efisien tergantung pada jenis kontennya. Beberapa mode umum dalam Emacs termasuk mode Text, mode Program, mode Markdown, mode HTML, mode CSS, dan banyak lagi. Mode dapat diubah dengan perintah tertentu untuk menyediakan fitur khusus sesuai dengan kebutuhan saat itu. 

    Bahkan di Emacs terdapat bash mode dan ssh mode, apa itu? Nanti akan kita bahas dalam tulisan terpisah. Sabar ya...

    3. Mini Buffer

    tampilan mini buffer emacs
    tampilan mini buffer emacs

    Mini buffer
    adalah area kecil di bagian bawah layar yang digunakan sebagai jendela informasi untuk setiap perintah yang kita jalankan. Ini adalah tempat di mana Emacs mengkomunikasikan detil informasi kepada pengguna. Dalam gambar di atas, saya mengetikkan perintah C-x C-f, kemudian tekan tombol Tab untuk melihat semua berkas yang ada di dalam direktori app/. Ini adalah salah satu mini buffer yang sering digunakan untuk pencarian berkas (mirip windows explorer kalo di Windows).

    C-g Membatalkan perintah

    Untuk mengembalikan lagi, atau menutup mini buffer, tekan C-g beberapa kali sampai mini buffer yang ada di bawah window menghilang.

    4. Bilah Menu (Menu Bar)

    tampilan menu bar di emacs
    tampilan menu bar di emacs


    Bilah menu berisi berbagai opsi dan perintah yang tersedia di Emacs. Di sini, kamu dapat menemukan perintah untuk membuka berkas, menyimpan, mencari, menggantikan, dan lainnya. Saya tidak terlalu tertarik dengan menu bar ini, karena saya sering bekerja dalam sistem no-window (non-GUI), dan ketika bekerja dalam mode no-windows, menu bar ini jarang bahkan ndak pernah saya pakai, dan masih bisa kita gantikan dengan menekan M-x.

    M-x Tanda M atau Meta diakses dengan menekan tombol Alt

    Untuk menjalankan emacs dalam sistem non-GUI, tambahkan parameter -nw (no-window) ketika menjalankan emacs:

    emacs -nw Menjalankan Emacs dalam mode -no-window

    Dan berikut ini tangkapan layar Emacs dalam sistem non-GUI.

    tampilan emacs dalam no-window system
    tampilan emacs dalam no-window system

    5. Bilah Status (Status Bar)

    tampilan status bar di emacs
    tampilan status bar di emacs


    Bilah status terletak di bagian bawah jendela Emacs dan memberikan informasi tentang status buffer yang aktif. Ini mencakup baris dan kolom kursor, mode buffer, dan informasi lain yang berguna.

    Status bar ini salah satu bagian penting dalam Emacs, mungkin akan saya jelaskan lebih jauh dalam tulisan lain.

    6. Shortcut dan Key Binding

    Emacs sangat terkenal karena menggunakan keyboard sebagai alat utama untuk berinteraksi. Terdapat banyak shortcut dan key binding yang dapat mempercepat pekerjaanmu. Beberapa shortcut dasar yang berguna antara lain:

    Command Keterangan
    C-x C-f Membuka berkas
    C-x C-S Menyimpan berkas
    C-x C-c Keluar dari Emacs

    Cara penggunaannya, tekan tombol Ctrl, jangan dilepas, kemudian tekan tombol X, lepas kemudian tekan lagi tombol S. Mungkin agak aneh bagi pengguna awam, tapi yang namanya belajar, pasti awalnya semua terasa aneh kan... hehehehe....

    Selain itu, Anda dapat membuat shortcut kustom sesuai dengan kebutuhan personal Anda.

    Dengan pemahaman tentang antarmuka pengguna Emacs ini, Anda akan dapat mengelola berkas dan teks dengan lebih baik. Selanjutnya, kita akan membahas lebih banyak tentang pengeditan teks dan fungsionalitas tambahan yang ditawarkan oleh Emacs.

    Memulai Emacs

    Setelah mengenal bagian-bagian dari UI Emacs, mari kita mulai menyunting berkas dengan Emacs. Yang pertama kita lakukan tentunya adalah membuka berkas.

    Membuka dan Menyimpan Berkas

    Membuka Berkas Baru

    Jalankan Emacs kemudian tekan

    C-x C-f Membuat/membuka berkas baru

    kemudian ketikkan nama file yang ingin Anda buat, misal tutorial.emacs.txt.

    emacs membuka berkas baru
    tampilan mini buffer Emacs ketika membuka berkas baru

    Setelah itu tekan Enter, dan berikut ini contoh tangkapan layarnya:

    membuka berkas baru di Emacs
    membuka berkas baru di Emacs

    Membuka berkas yang sudah ada

    Anggap saja kita memiliki berkas yang sudah kita beri nama tutorial.emacs.txt yang berada di direktori home kita. Silakan run Emacs masing-masing dan mari kita buka berkas tersebut dengan perintah:

    C-x C-f Membuat/membuka file baru

    Perintah ini akan membuka mini buffer di bagian bawah layar, selanjutnya ketikkan nama berkas tersebut, kemudian tekan Enter.

    Menyimpan Berkas

    Untuk menyimpan berkas, ketikkan perintah

    C-x C-s Menyimpan berkas

    Jika ini adalah penyimpanan pertama kali, Emacs akan meminta nama berkas. Ketikkan nama berkas kemudian tekan Enter. Jika berkas sudah dibuat sebelumnya, penyimpanan akan dilakukan ke nama berkas yang sudah ada tanpa konfirmasi tambahan.

    Menyimpan Berkas dengan Nama Baru (Save As)

    Jika Anda ingin menyimpan berkas dengan nama baru, ketikkan perintah

    C-x C-w Menyimpan dengan nama baru (save as)

    Ini akan membuka mini buffer, dan Anda diminta mengetikkan nama berkas baru. Tekan Enter untuk menyimpan berkas dengan nama baru.

    Selain menggunakan cara di atas, kita sebenarnya bisa juga menggunakan menu bar yang ada, namun sekali lagi perlu diingat, kalau kita ingin mendayagunakan Emacs, sebaiknya pelan-pelan singkirkan mouse itu, ganti dengan perintah melalui keyboard.

    Navigasi dasar dalam Emacs adalah kunci untuk bergerak dengan cepat dalam teks dan buffer. Berikut adalah beberapa perintah navigasi dasar yang berguna:

    Navigasi dasar

    Command Keterangan
    C-f Perintah ini digunakan untuk maju satu karakter ke depan. Ini sering digunakan untuk menggeser kursor ke kanan.
    C-b Perintah ini digunakan untuk mundur satu karakter. Ini membantu Anda untuk menggeser kursor ke kiri.
    M-f Perintah ini digunakan untuk maju satu kata ke depan. Ini memindahkan kursor ke awal kata berikutnya.
    M-b Perintah ini digunakan untuk mundur satu kata. Ini memindahkan kursor ke awal kata sebelumnya.
    C-v Perintah ini digunakan untuk maju ke bawah dalam teks sejauh satu layar penuh (menggulung ke bawah).
    M-v Perintah ini digunakan untuk mundur ke atas dalam teks sejauh satu layar penuh (menggulung ke atas).
    C-n Perintah ini digunakan untuk bergerak turun satu baris.
    C-p Perintah ini digunakan untuk bergerak naik satu baris.
    C-a Perintah ini digunakan untuk bergerak ke awal baris.
    C-e Perintah ini digunakan untuk bergerak ke akhir baris.

    Navigasi dengan memanfaatkan fitur search

    Selain beberapa kombinasi tombol di atas, kita dapat melakukan navigasi cepat dengan cara melakukan pencarian terhadap kata yang akan kita sunting. Caranya adalah dengan menekan C-s, ketik kata yang ingin kita cari (dalam hal ini kata and, kemudian tekan Enter. Apabila ada beberapa kata yang sama, dan yang kita inginkan adalah beberapa kata di depan, maka tekan saja C-s beberapa kali sampai kursor bergerak ke kata yang kita inginkan.

    C-s Mencari kata maju (forward-mode)

    ikuti dengan mengetik kata yang ingin dicari

    Selalu perhatikan bagian mini buffer dan status bar ya, karena di sana kita akan dapat keterangan tambahan terhadap perintah yang kita jalankan.

    Anda dapat menekan C-s secara berulang sampai menemukan kata yang ingin Anda cari.

    Misal kita punya teks berikut:

    Lorem Ipsum is simply dummy text of the printing and typesetting industry. 
    Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, 
    when an unknown printer took a galley of type and scrambled it to 
    make a type specimen book. It has survived not only five centuries, 
    but also the leap into electronic typesetting, remaining essentially 
    unchanged. It was popularised in the 1960s with the release of 
    Letraset sheets containing Lorem Ipsum passages, and more recently 
    with desktop publishing software like Aldus PageMaker including 
    versions of Lorem Ipsum.

    Kita ingin mencari kata and yang kedua, maka langkah-langkahnya adalah sebagai berikut:

    Command Keterangan
    C-p beberapa kali Bergerak ke baris paling atas
    C-a Menuju ke awal baris
    C-s Memulai pencarian maju

    Ketikkan kata yang ingin kita cari (perhatikan status bar)
    C-s Maju ke kata and yang kedua
    Enter Mengakhiri pencarian, otomatis kursor akan berada di akhir kata yang kita cari.
    Ini adalah beberapa perintah dasar yang akan membantu Anda bergerak dengan cepat dan efisien dalam teks dan buffer saat menggunakan Emacs. Dengan menguasai perintah-perintah ini, Anda akan menjadi lebih produktif dalam pengeditan teks dan navigasi di Emacs.

    Pengeditan Teks Dasar

    Bagian ini akan membahas cara menyorot sebuah teks yang akan kita sunting, misal teks tersebut mau kita potong (cut), salin (copy), atau sekadar mengedit typo.

    Memotong, Menyalin dan Menyisipkan Teks

    Untuk memulai penyorotan, sebaiknya ganti dulu theme default ke theme lain, misal wheatgrass. Perhatikan tangkapan layar berikut untuk mengganti theme. Caranya adalah dengan menekan menu Options > Customize Emacs > Custom Themes. Tinggal pilih menggunakan mouse aja ya biar lebih mudah, meskipun sebenarnya bisa dengan navigasi melalui keyboard juga... Tapi untuk saat ini dikit² boleh lah pake mouse... 😊
    cara mengganti theme di emacs

    Tujuan penggantian theme ini agar pengguna awam tidak bingung, karena kalau menggunakan theme dasar, kata yang disorot tidak ada penandanya (warna lain). Kalau menggunakan theme lain, biasanya ada warna yang berbeda terhadap kata yang kita sorot. Mari kita langsung praktik saja agar tidak bingung.

    Misal, kita ingin menyalin kata printer, maka seperti cara pencarian di atas, kita lakukan pencarian dengan menekan C-s diikuti dengan kata printer, ikuti dengan menekan Enter. Kursor saat ini berada tepat di akhir kata printer, selanjutnya kita tekan:

    Command Keterangan
    C-Space Memulai untuk menyorot
    M-b Memindahkan kursor ke belakang 1 kata
    M-w Menyalin bagian yang sedang disorot ke clipboard.

    Berikut ini tangkapan layarnya

    menyorot kata di emacs
    menyorot teks di emacs

    Sekarang kita sudah memiliki kata printer di clipboard, kalau kita ingin menyisipkan (paste) kata tersebut di awal paragraf (misalnya), tekan navigasi berikut:

    Command Keterangan
    C-p Naik 1 baris (tekan beberapa kali, sampai kursor berada di baris paling atas)
    C-a Menuju awal baris
    C-y Menyisipkan teks yang sudah kita salin sebelumnya.

    Navigasi ini sebenarnya sifatnya opsional, di emacs kita masih bisa menggunakan tombol arrow (panah), bahkan mouse ketika sedang berada di GUI.

    Selain menyalin (copy), kita juga bisa memotong (cut) teks, caranya seperti dengan yang di atas, bedanya perintah M-w kita ganti dengan C-w.

    Command Keterangan
    M-w Copy
    C-w Cut
    C-y Paste

    Semoga berhasil ya... kalau masih bingung, ulangi pelan-pelan... :)

    Menggunakan Undo dan Redo

    Berikut ini adalah perintah untuk melakukan Undo dan Redo di Emacs.

    Command Keterangan
    C-_ Undo
    C-g C-_ Redo
    Tanda _ yang dimaksud adalah underscore, jadi menekannya harus menggunakan kombinasi tombol Shift, berarti kita tekan tombol Ctrl, tahan tekan lagi tombol Shift, kemudian tekan _. Silakan coba untuk di explore sendiri ya....

    Mencari dan Menggantikan Teks

    Untuk mencari dan mengganti teks secara manual dengan konfirmasi, lakukan cara berikut:

    Command Keterangan
    M-S-5 ketik kata yang ingin dicari (perhatikan status bar)

    Tekan enter

    Isi dengan kata pengganti (perhatikan status bar)

    Tekan enter lagi

    Tekan y untuk Yes, atau tekan n untuk No (tidak mengganti) (manual replace)

    atau jika ingin replace all, tekan !

    Atau kita juga bisa melakukan find and replace tanpa perlu konfirmasi satu persatu. Caranya adalah dengan menekan ! untuk melakukan replace ke semua kata yang ada di teks.

    Mode dan Fungsionalitas Tambahan

    Emacs memiliki kemampuan yang luar biasa untuk beradaptasi dengan berbagai jenis konten dan pekerjaan. Hal ini dicapai melalui penggunaan mode dan fungsionalitas tambahan. Mari kita bahas lebih lanjut:

    Mode Text

    Ini adalah mode default di Emacs. Mode ini digunakan untuk mengedit teks biasa dan menyediakan berbagai alat pengeditan dasar. Mode ini udah pernah kita lihat ketika kita membuka Emacs pertama kali.

    Mode Programming

    Emacs memiliki mode khusus untuk berbagai bahasa pemrograman seperti Python, C++, Java, dan banyak lagi. Mode ini memberikan penyorotan sintaksis, tautan cepat, dan fitur-fitur lain yang berguna saat menulis kode (coding). Mode ini udah saya contohkan dalam tangkapan layar di atas (python mode).

    Mode Markdown

    Salah satu mode favorit, soalnya ketika menulis code, kita butuh dokumentasi yang biasanya dalam format md (markdown). Mode ini cocok untuk mengedit berkas Markdown. Emacs akan memberikan penyorotan sintaksis yang membantu dalam menulis dokumen Markdown dengan benar. Lebih lanjut, jika diperlukan Emacs bisa meng-export berkas md ini menjadi berkas HTML.

    tangkapan layar emacs dalam mode markdown
    emacs dalam mode markdown

    Mode Org

    Mode Org memungkinkan kamu membuat dokumen struktural dengan cepat, termasuk membuat todo-list, jadwal, dan bahkan presentasi. Mode ini sering digunakan oleh para penulis, akademisi dan aktivitas-aktivitas yang berbasis jadwal (project based).

    emacs org mode membuat todo list
    emacs org mode doin some todo list

    Ini termasuk mode favorit juga, dulu saya sering pake buat nulis dokumentasi, kemudian saya export ke HTML untuk di upload ke web, atau export ke PDF buat di share ke rekan-rekan. Mode ini juga dikenal dengan kemampuannya dalam mengorganisir todo list dan lebih besar lagi dalam skala proyek.

    emacs org mode membuat tabel
    contoh emacs org-mode membuat table

    Silakan menuju tautan https://orgmode.org/ untuk mengetahui lebih lanjut. Mungkin lain waktu akan kita bahas lebih lanjut dalam tulisan lain.

    Mode dired

    dired mode adalah salah satu mode yang memungkinkan kita berintaksi dengan berkas atau direktori, padanannya seperti file explorer kalau di sistem GUI. Dengan mode ini kita dapat dengan mudah copy, paste, rename, baik individu maupun secara bersamaan (bulk).

    Berikut ini tampilan dari mode dired dalam emacs:

    emacs dired mode
    emacs dired mode

    Untuk melakukan navigasi, kita bisa gunakan tombol panah, atau C-n, C-p, Enter.

    Penggunaan Ekstensi (packages) dalam Emacs

    Kalau Anda familiar dengan sistem operasi Linux, bayangkan ekstensi ini seperti package yang diorganisir dalam sebuah repo, kita bisa memilih paket tambahan yang ingin kita pasang di Emacs. Kita juga bisa menambahkan daftar repo ke dalam Emacs untuk menjangkau ekstensi lain yang mungkin tidak tersedia di repo bawaan.

    Menginstall Ekstensi

    Untuk melihat daftar ekstensi yang tersedia dalam repo default, lakukan perintah berikut:

    M-x package-list-packages Melihat paket yang tersedia di repo

    Dan berikut ini tangkapan layarnya:

    emacs daftar ekstensi paket dalam repo
    daftar ekstensi yang tersedia di repo

    Setelah muncul daftar ekstensi ini, kita bisa melakukan search dengan cara seperti yang sudah ditulis di atas (C-s), kalau sudah ketemu tekan saja i (install) kemudian tekan x (execute), nanti di mini buffer muncul pertanyaan konfirmasi apakah benar kita mau install ekstensi tersebut.

    Command Keterangan
    C-s Search dalam repo
    i Menandai package yang akan di-install
    x Eksekusi install

    Contoh ekstensi yang sering dipakai

    Sebenarnya hal ini tidak patokan khusus sih, semuanya kembali ke preferensi masing-masing. Ada yang mungkin lebih banyak menggunakan emacs untuk coding python, maka install ekstensi yang mendukung untuk itu, atau mungkin ada yang sering menggunakan org-mode, maka carilah ekstensi yang mendukung untuk produktivitas bekerja di org-mode atau Anda sering melakukan operasi git? install package magit, dan lain sebagainya.

    Cara taunya gimana kalau ekstensi ini yang kita butuhkan? Googling aja atau dalam daftar repo di atas ada keterangan singkatnya, coba aja install, kalau cocok lanjutkan kalau ndak cocok ya hapus, as simple as that... Untuk paket atau ekstensi yang sudah pernah kita install nanti ada keterangan installed ketika kita melakukan command M-x package-list-packages dan search paket tersebut. Seperti dalam tangkapan layar berikut ini:

    emacs contoh paket sudah terinstall
    contoh paket yang sudah terinstall

    Kustomisasi Emacs

    Melakukan kustomisasi adalah salah satu langkah penting bagi pengguna Emacs, kenapa? Karena dengan mengkonfigurasi Emacs sesuai preferensi Anda, Anda dapat menciptakan sebuah lingkungan kerja yang nyaman dan efisien. Sebagai langkah awal, berikut ini beberapa hal yang penting untuk dikenal sebelum melakukan konfigurasi secara lebih jauh.

    Mengkonfigurasi Emacs

    Ingat bahwa Emacs adalah software open source, artinya hampir di semua bagiannya dapat kita custom sesuai dengan keinginan kita. Apa aja? Mulai dari yang sifatnya dasar misalnya tampilan, membuat pintasan pribadi, penambahan packages sesuai kebutuhan, bahkan kita dapat membuat fungsi sendiri menggunakan bahasa pemrograman Lisp untuk memenuhi kebutuhan kita. Mari kita pelajari satu per satu...

    Istilahnya kustomisasi atau konfigurasi, tapi praktiknya kita nanti akan banyak bersentuhan dengan file .emacs yang ada di direktori home kalian masing-masing. Mau menambahkan repo, mau mengubah default theme, menambahkan key binding, membuat fungsi, dan lain sebagainya, semua dilakukan melalui penyuntingan file .emacs.

    Pengaturan Theme dan Tampilan

    Hal ini sudah kita singgung di bagian atas, bahwa kita dapat mengubah theme dasar dengan theme bawaan lain yang sudah disertakan. Tinggal coba aja mana yang sekiranya cocok. Selain theme bawaan, kita dapat menambahkan theme sendiri, mari kita gunakan cara lain untuk install, yakni dengan menambahkan repo Melpa terlebih dahulu.

    Silakan buka file ~/.emacs (sesuaikan dengan sistem operasi masing-masing), kemudian tambahkan baris berikut:
    
    (require 'package)
    (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)
    ;; Comment/uncomment this line to enable MELPA Stable if desired.  See `package-archive-priorities`
    ;; and `package-pinned-packages`. Most users will not need or want to do this.
    ;;(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)
    (package-initialize)
        
    Kemudian quit dari emacs dan jalankan lagi. silakan jalankan perintah berikut di emacs
    
      
      
    Command Keterangan
    M-x package-list-packages Melihat daftar package dalam semua repo (bawaan + tambahan)
    tekan enter, dan saat ini repo Melpa berarti sudah kita tambahkan, saatnya kita cari salah theme yang sedang favorit saat ini, yakni zenburn. Caranya adalah dengan menekan C-s diikuti dengan mengetik zenburn, sampai beberapa kali sampai ketemu dengan package yang bernama zenburn-theme.
    emacs install zenburn theme via melpa repo
    emacs install theme zenburn via repo Melpa

    Berkas .emacs yang barusan kita edit itu adalah berkas utama dalam melakukan konfigurasi emacs selanjutnya. Segala hal yang sifatnya custom nanti akan kita tambahkan dalam .emacs. Berikut ini adalah contoh .emacs saya untuk menghilangkan menu bar, dan beberapa setting lain:

    Note: baru sadar kalau .emacs saya umurnya udah lebih dari 9 tahun, kalau ada yang ndak work, tolong di-update sendiri ya... soalnya, akhir-akhir ini jarang coding, jadi jarang juga sentuh emacs.

    
    ;-------------------------;
    ;;; User Interface ;;;
    ;-------------------------;
    ;; No splash screen ...
    (setq inhibit-startup-message t)
    ;; Disable menubar
    (menu-bar-mode -1)
    ;; Disable toolbar
    (tool-bar-mode -1)
    ;; Disable scrollbar
    (scroll-bar-mode -1)
    ;; always use spaces, not tabs, when indenting
    (setq indent-tabs-mode nil)
    ;; require final newlines in files when they are saved
    (setq require-final-newline t)
        

    Silakan tambahkan setting tersebut ke dalam .emacs Anda, kalau sekiranya cocok silakan pakai, kalau semisal ndak cocok, ya tinggal hapus aja dari .emacs Anda.

    Membuat Pintasan (Shortcut) Pribadi

    Sama dengan sebelumnya, untuk membuat pintasan pribadi, kita custom lagi .emacs kita. Berikut ini contoh .emacs saya terkait dengan pintasan pribadi.

    
    ;-------------------------;
    ;;; Custom Key Bindings ;;;
    ;-------------------------;
    
    (global-set-key (kbd "C-;") 'comment-or-uncomment-region)
    (global-set-key (kbd "M-/") 'hippie-expand)
    (global-set-key (kbd "C-x g") 'magit-status)
    
    ;; make cursor movement keys under right hand's home-row
    (global-set-key (kbd "M-i") 'previous-line)
    (global-set-key (kbd "M-k") 'next-line)
    (global-set-key (kbd "M-j") 'backward-char)
    (global-set-key (kbd "M-l") 'forward-char)
        

    Silakan tebak kira-kira maksud dari baris-baris konfigurasi tersebut apa?

    Membuat Fungsi Emacs Kustom

    Saya dulu pernah membuat fungsi sendiri untuk mempercepat proses kerja saya, namun saya cari lagi udah ndak ada di .emacs. Ya buat contoh kali ini, kita buat fungsi sederhana hello world aja ya, nanti silakan dikembangkan sendiri sesuai kebutuhan.

    Mari kita tambahkan baris berikut di .emacs

    
    (defun helloo ()
     (interactive)
     (message "Hello World!"))
        

    Simpan, kemudian keluar dari emacs dan jalankan lagi emacs nya, kemudian jalankan perintah M-x helloo tekan Enter, kemudian di mini buffer akan keluar Hello World!. Gimana seru bukan? bukaaaaaann....

    Menyimpan dan Berbagi Konfigurasi Emacs

    Inilah serunya di komunitas pengguna Emacs, mereka aktif dan saling berbagi .emacs mereka dengan pengguna lain, sehingga Emacs seperti ndak pernah mati, pasti ada aja konfigurasi baru yang di-share oleh pengguna lain, kemudian ditanggapi dan bahkan dipakai untuk disempurnakan atau dimodifikasi lagi sesuai preferensi masing-masing.

    Productivity Tips

    Alhamdulillah... masuk ke bagian akhir dari tulisan panjang ini.... saatnya kita bicara produktivitas. Sedikit sharing tentang emacs, bahwa beberapa fitur yang saya secara pribadi suka dari emacs adalah navigasi cepat menggunakan search (C-s C-r), paling C-f , C-b, M-f, M-b, C-a, C-e, intinya navigasi standar lah....

    Kombinasi di atas juga saya pakai ketika berhadapan dengan console (terminal), karena by default console di Linux itu menggunakan emacs untuk navigasi, coba aja... C-p untuk lihat command sebelumnya, C-a menuju awal baris, C-g untuk membatalkan perintah, M-b mundur satu kata, M-f maju satu kata dan seterusnya.

    Fitur berikutnya yang saya kadang pakai adalah yang akan kita bahas ini, macros! Intinya ini merekam aktivitas kita kemudian kita ulang sesuai kebutuhan kita. Untuk lebih jelasnya pakai contoh aja ya....

    Penggunaan Macros untuk Otomatisasi

    Misal kita memiliki teks seperti berikut:

    
    <a href="https://www.yogya.org/2005/09/kamus-boso-walikan-jogja.html">kamus boso walikan jogja</a>
    <a href="https://www.yogya.org/2010/07/wisata-sleman.html">wisata sleman</a>
    <a href="https://www.yogya.org/2010/07/wisata-jogja.html">wisata kota jogja</a>
    <a href="https://www.yogya.org/2010/07/wisata-bantul.html">wisata bantul</a>
    <a href="https://www.yogya.org/2010/07/wisata-kulon-progo.html">wisata kulon progo</a>
    <a href="https://www.yogya.org/2010/07/wisata-gunung-kidul.html">wisata gunungkidul</a>
    <a href="https://www.yogya.org/2015/03/sejarah-wisdom-park-ugm.html">sejarah wisdom park ugm</a>
    <a href="https://www.yogya.org/2022/05/tentang-jogja.html">tentang jogja</a>
    <a href="https://www.yogya.org/2023/09/julukan-kota-jogja.html">julukan kota jogja</a>
    <a href="https://www.yogya.org/2023/09/contoh-itinerary-jogja-3-hari-2-malam.html">itinerary jogja 3 hari 2 malam</a>
        

    Kemudian kita ingin menghilangkan tag HTML dan menyisakan teks nya saja (yang didalam a href). Mungkin Anda berpikir, ah ini bisa pakai regex... iya bisa sih... tapi kali ini saya akan tunjukkan caranya menyelesaikan masalah ini menggunakan macro di emacs.... bersiaplah!

    By default, untuk memulai macro di Emacs menggunakan tombol F3 , dan mengakhiri dengan F4. untuk mengulang, tekan F4 lagi sebanyak kebutuhan, atau bisa juga, misal kita ingin ulang 9 kali maka, tekan C-u 9 F4.

    Command Keterangan
    F3 Memulai macro
    C-p Tekan beberapa kali sampai kursor berada di baris paling atas
    C-a Menuju ke awal baris
    C-space Memulai mode sorot
    C-s Memulai mode search
    "> kita mencari simbol ">
    Enter Menghentikan pencarian
    Delete Tekan tombol delete untuk menghilangkan teks yang sudah disorot
    C-s Melakukan pencarian lagi
    </ Mencari simbol </
    Enter Menghentikan pencarian
    C-b 2x Mundur (backward) 2 karakter
    C-space Memulai penyorotan teks
    C-e Menuju akhir baris
    Delete Hapus teks yang disorot
    C-n Menujur baris berikutnya
    F4 Menyelesaikan macro

    Gimana? bisa? Kalau belum berhasil silakan ulang pelan-pelan ya pak sopir

    Kalau sudah berhasil, waktunya kita jalankan ulang keyboard macro yang sudah kita rekam sebelumnya. Caranya

    Command Keterangan
    F4 Mengulang macro 1 kali

    Atau bisa juga kita ulang berapa kali (sesuai kebutuhan)

    Command Keterangan
    C-u 5 F4 Mengulang macro sebanyak 5 kali

    Cukup ya... untuk sementara demo untuk fungsi macro di Emacs... nanti silakan lanjut sendiri ke materi macro yang lebih dalam, misal menyimpan macro, atau bahkan menulis macro di fungsi tersendiri di .emacs Anda? 

    why not? possibility is limitless!

    Penggunaan Markah (bookmark) untuk Navigasi Cepat

    Nah... ini bagian paling terakhir dari serial ini. Anda kalau terbiasa menggunakan vscode, setelah quit kemudian Anda matikan komputer, besok ketika buka vscode lagi, project yang terakhir Anda kerjakan akan terbuka secara otomatis. Kurang lebih begitulah prinsip bookmark.

    Berikut ini 2 kombinasi tombol utama untuk set and get bookmark di Emacs.

    Command Keterangan
    C-x r m Enter Set bookmark
    C-x r l Melihat semua file yang sudah kita bookmark sebelumnya.
    Emacs Bookmark
    emacs bookmark list

    Bookmark ini sifatnya persistent ya... meskipun Anda tutup Emacs, tidak akan hilang. Sebagai catatan, kalau Anda pengguna aktif Emacs, perintah untuk melihat daftar bookmark (C-x r l) ini adalah salah satu perintah pertama yang harus Anda hapal!

    Penutup

    Sebagai penutup serial tulisan ini, penulis ingin menyampaikan bahwa sebenarnya konsep yang diusung text editor modern sekarang, seperti vscode dengan berbagai dukungan package nya itu, udah dimulai di Emacs puluhan tahun lalu. Meskipun, keduanya tidak bisa disandingkan apalagi dibandingkan karena memang mengusung idealisme yang berbeda. 

    Saya pribadi, sebagai pengguna, tinggal menikmati, bosen itu ganti yang ini, tidak usah mem-banding²-kan apalagi sampai mencaci....

    Text Editor bisa datang silih berganti, tapi emacs tetap di hati... 😄

     Referensi Lebih Lanjut

    Note: beberapa artikel lain menyusul yaaa... mungkin akan diselingi dengan tulisan lain dulu... biar ndak bosen...
     

    Daftar Pustaka

    Artikel ini sebenarnya bentuk lain dari tulisan saya sebelumnya tentang Emacs, yang dipublikasi via github (dalam format pdf).

    • https://www.gnu.org/software/emacs/
    • https://github.com/kholidfu/emacs_doc/
    • https://orgmode.org/ 

    LihatTutupKomentar