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

Figure 1: 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.

1 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.

Simbol Keterangan
C Tombol Ctrl
M Tombol Alt
S Tombol Shift
- Tombol dash, 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, terus lepas.

Jangan lupa, terus perhatikan mini buffer ya, karena ada banyak 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….

2 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.

3 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…

4 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.

5 Menginstall Emacs

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

5.1 Linux (Ubuntu)

Untuk Ubuntu dan beberapa varian distro Debian lainnya:

sudo apt update && sudo apt install emacs

Atau, jika Anda ingin install yang versi non-GUI:

sudo apt update && sudo apt install emacs-nox

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.

5.2 MacOS

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

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, install Emacs dengan perintah:

brew install emacs

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

5.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.

6 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.

6.1 Buffer

gambar tampilan buffer di emacs

Figure 2: 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.

6.2 Mode

tampilan emacs mode python

Figure 3: 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…

6.3 Mini Buffer

tampilan mini buffer di Emacs

Figure 4: tampilan mini buffer di 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 Ctrl-x Ctrl-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).

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

6.4 Bilah Menu (Menu Bar)

tampilan menu bar di Emacs

Figure 5: 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 Alt-x.

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

emacs somefile.py -nw

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

tampilan emacs dalam mode non-window system

Figure 6: tampilan emacs dalam no-window system

6.5 Bilah Status (Status Bar)

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.

tampilan status bar di Emacs

Figure 7: tampilan status bar di Emacs

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

6.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
Ctrl-x Ctrl-f Membuka berkas
Ctrl-x Ctrl-s Menyimpan berkas
Ctrl-x Ctrl-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.

7 Memulai Emacs

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

7.1 Membuka dan Menyimpan Berkas

7.1.1 Membuka Berkas Baru

Jalankan Emacs kemudian tekan Ctrl-x Ctrl-f, kemudian ketikkan nama file yang ingin Anda buat, misal tutorial.emacs.txt

emacs membuka berkas baru

Figure 8: tampilan mini buffer Emacs ketika membuka berkas baru

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

membuka berkas baru di Emacs

Figure 9: membuka berkas baru di Emacs

7.1.2 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 Ctrl-x Ctrl-f. Perintah ini akan membuka mini buffer di bagian bawah layar, selanjutnya ketikkan nama berkas tersebut, kemudian tekan Enter.

7.1.3 Menyimpan Berkas

Untuk menyimpan berkas, ketikkan perintah Ctrl-x Ctrl-s. 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.

7.1.4 Menyimpan Berkas dengan Nama Baru (Save As)

Jika Anda ingin menyimpan berkas dengan nama baru, ketikkan perintah Ctrl-x Ctrl-w.

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.

7.2 Navigasi dalam Teks

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

7.2.1 Navigasi Dasar

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

7.2.2 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 Ctrl-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 Ctrl-s beberapa kali sampai kursor bergerak ke kata yang kita inginkan.

Command Keterangan
Ctrl-s Mencari kata secara maju (forward-search)
Ctrl-r Mencari kata secara mundur (backward-search)

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 Ctrl-s secara berulang sampai menemukan kata yang ingin Anda cari.

Misal, kita punya teks sebagai 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
ctrl-p Tekan beberapa kali sampai kursor bergerak ke baris paling atas.
ctrl-a Menuju ke awal baris.
ctrl-s Memulai pencarian maju. Ketikkan kata yang ingin kita cari (perhatikan mini buffer).
ctrl-s Maju ke kata and yang kedua
Enter Mengakhiri pencarian, otomatis kursor akan berada di akhir kaya 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.

7.3 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.

7.3.1 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 themes di Emacs

Figure 10: cara mengganti themes 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 Ctrl-s diikuti dengan kata printer, ikuti dengan menekan Enter. Kursor saat ini berada tepat di akhir kata printer, selanjutnya kita tekan:

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

Berikut ini tangkapan layarnya

menyorot teks di Emacs

Figure 11: 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
Ctrl-p Naik 1 baris (tekan beberapa kali, sampai kursor berada di baris paling atas)
Ctrl-a Menuju ke awal baris.
Ctrl-y Menyisipkan teks yang sudah kita 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 Alt-w kita ganti dengan Ctrl-w.

Command Keterangan
Alt-w Copy
Ctrl-w Cut
Ctrl-y Paste

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

7.3.2 Menggunakan Undo dan Redo

Berikut ini adalah perintah untuk melakukan undo dan redo di Emacs.

Command Keterangan
Ctrl-_ Undo
Ctrl-g Ctrl-_ 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….

7.3.3 Mencari dan Menggantikan Teks

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

Command Keterangan
Alt-Shift-5 Menjalankan fungsi query-replace, ketik kata yang ingin dicari (perhatikan mini buffer)
Enter Tekan Enter
  Isi dengan kata pengganti (perhatikan mini buffer)
Enter Tekan Enter lagi
y Tekan y untuk Yes, atau tekan n untuk No (tidak mengganti) (mode confirmation)
! atau jika 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.

8 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:

8.1 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.

8.2 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).

8.3 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.

tampilan emacs dalam mode markdown

Figure 12: tampilan emacs dalam mode markdown

8.4 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).

tampilan emacs mode Org membuat todo list

Figure 13: tampilan mode org 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.

tampilan emacs org-mode membuat table

Figure 14: tampilan 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.

Btw artikel yang sedang Anda baca ini ditulis dengan Org mode lhoo...

8.5 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

Figure 15: emacs dired mode

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

9 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.

9.1 Menginstall Ekstensi

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

Alt-x package-list-packages

Dan berikut ini tangkapan layarnya:

daftar ekstensi yang tersedia di repo

Figure 16: daftar ekstensi yang tersedia di repo

Setelah muncul daftar ekstensi ini, kita bisa melakukan search dengan cara seperti yang sudah ditulis di atas (Ctrl-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
Ctrl-s Search dalam repo
i menandai package yang akan di-install
d menandai package yang akan di hapus (uninstall)
x Eksekusi

9.2 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 Alt-x package-list-packages dan search paket tersebut. Seperti dalam tangkapan layar berikut ini:

contoh paket yang sudah di install

Figure 17: contoh paket yang sudah di-install

10 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.

10.1 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.

10.2 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 Alt-x package-list-packages untuk melihat daftar package dalam semua repo (bawan + tambahan), kemudian 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 Ctrl-s diikuti dengan mengetik zenburn, sampai beberapa kali sampai ketemu dengan package yang bernama zenburn-theme.

emacs install theme zenburn via repo Melpa

Figure 18: 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.

10.3 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?

10.4 Membuat Fungsi Emacs Custom

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 Alt-x helloo tekan Enter, kemudian di mini buffer akan keluar Hello World!. Gimana seru bukan? bukaaaaaann….

10.5 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.

11 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 (Ctrl-s Ctrl-r), paling Ctrl-f , Ctrl-b, Alt-f, Alt-b, Ctrl-a, Ctrl-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… Ctrl-p untuk lihat command sebelumnya, Ctrl-a menuju awal baris, Ctrl-g untuk membatalkan perintah, Alt-b mundur satu kata, Alt-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….

11.1 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 Ctrl-u 9 F4.

Command Keterangan
F3 Memulai Macro
Ctrl-p Tekan beberapa kali sampai kursor berada di baris paling atas
Ctrl-a Menuju ke awal baris
Ctrl-Space Memulai mode sorot
Ctrl-s Memulai mode search forward
"> Mencari simbol ">
Enter Menghentikan pencarian
Delete Tekan tombol Delete untuk menghilangkan teks yang sudah disorot
Ctrl-s Melakukan pencarian lagi
</ Mencari simbol </
Enter Menghentikan pencarian
Ctrl-b 2x Mundur (backward) 2 karakter
Ctrl-space Memulai penyorotan teks
Ctrl-e Menuju akhir baris
Delete Hapus teks yang disorot
Ctrl-n Menuju 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 dengan menekan F4 sebanyak yang Anda mau, atau bisa juga dengan menentukan berapa kali pengulangan yang kita inginkan, dengan menekan Ctrl-u 5 F4.

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!

11.2 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
Ctrl-x r m Set bookmark
Ctrl-x r l Melihat semua bookmark

emacs bookmark list

Figure 19: 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 (Ctrl-x r l) ini adalah salah satu perintah pertama yang harus Anda hapal!

12 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…

14 Daftar Pustaka

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

Terakhir diperbarui: 2023-10-11 Rab 09:15 by kholidfu.