Mengelola file langsung dari Emacs dengan Dired: membuka direktori sebagai buffer, navigasi antar file & direktori, operasi bulk dengan mark (m/u/d/x), copy/move/rename massal, wdired untuk mengedit nama file seperti teks biasa, dired-narrow untuk menyaring daftar, dan workflow proyek tanpa keluar Emacs.

Sejauh ini kalian pindah-pindah file dari terminal (atau file manager) lalu kembali ke Emacs. Episode 14 mengakhiri kebiasaan itu: Dired — file manager bawaan Emacs — mengubah direktori menjadi buffer. Semua operasi file: buka, salin, pindah, ganti nama massal, hingga search — berjalan di dalam editor.
Kenapa penting? Karena konteks adalah segalanya. Bekerja di satu lingkungan berarti tidak ada lompatan mental antara "kelola file" dan "edit file". Dired juga menjadi dasar workflow proyek di episode 15 (Magit) dan 17 (project search) — keduanya sering dibuka dari Dired.
Cara paling sederhana: buka folder seperti file.
C-x C-f lalu ketik ~/proyek/ lalu RETEmacs mendeteksi path direktori dan membukanya dengan dired-mode. Kalian juga bisa memulai Dired langsung:
C-x d → dired: prompt nama direktoriBuffer Dired menampilkan daftar file seperti ls -l:
total used in directory 3 available 4.0 GiB
drwxr-xr-x budi budi 4.0K Agu 16 09:12 src
drwxr-xr-x budi budi 4.0K Agu 16 09:10 tests
-rw-r--r-- budi budi 1.2K Agu 16 09:15 app.py
-rw-r--r-- budi budi 310 Agu 16 08:59 README.mdDi dired-mode, huruf-huruf berperan seperti aplikasi:
| Tombol | Aksi |
|---|---|
n / p | Baris berikutnya / sebelumnya |
RET | Buka file / masuk direktori |
^ | Naik ke direktori induk |
+ | Buat direktori baru |
g | Refresh tampilan |
q | Tutup buffer Dired |
C-x d | Dired lain (tumpuk) |
^ (caret) sangat penting — naik satu level direktori tanpa keluar. g refresh setelah perubahan file dari luar.
Kekuatan Dired ada di mark — menandai beberapa file lalu operasi sekaligus:
| Tombol | Aksi |
|---|---|
m | Mark file di baris |
u | Unmark |
U | Unmark semua |
% m | Mark dengan regexp (% m \.py$ untuk semua .py) |
t | Toggle mark semua |
* / | Mark semua direktori |
d | Flag untuk delete (konfirmasi dengan x) |
x | Eksekusi delete yang di-flag |
Contoh alur: pindahkan semua *.bak ke folder lain.
1. % m \.bak$ → mark semua file .bak
2. R → prompt "Move to:" → ketik ~/backup/
3. y / ! → konfirmasi| Tombol | Aksi |
|---|---|
C | Copy file ter-mark ke tujuan |
R | Move/rename ter-mark |
D | Delete ter-mark |
S | Symlink ter-mark |
O | Chown (ganti owner) |
M | Chmod (ganti permission) |
G | Chgrp |
Semua operasi menampilkan daftar konfirmasi — tekan ! untuk apply semua, y/n per file, q untuk batal.
wdired-mode (writable dired) mengubah daftar file menjadi teks yang bisa diedit:
C-x C-q → masuk mode edit nama file
(edit nama file sesuka kalian)
C-x C-s → simpan — semua rename diterapkanRename 20 file dengan mengetik ulang namanya di editor — bukan dengan 20 perintah mv. Ini pola "edit-by-hand massal" yang tidak dimiliki file manager grafis. Bahkan bisa dikombinasikan dengan query-replace (episode 6) untuk rename yang berpola:
1. C-x C-q → wdired-mode
2. C-M-% _old RET _new RET → ganti substring di semua nama
3. ! RET → terapkan semua
4. C-x C-s → simpan renameDaftar file besar membuat pencarian sulit. dired-narrow (bagian dari paket dired-narrow / bawaan di Emacs 30 sebagai dired-narrow minor mode) menyaring file yang cocok dengan pola:
(add-hook 'dired-mode-hook (lambda () (dired-narrow-mode 1))), → dired-narrow: filter daftar (ketik pola, RET untuk terapkan)Saat mode aktif, mengetik pola (misal src) langsung menyaring hanya file yang cocok. Tekan C-g untuk kembali ke daftar penuh. Ini membuat Dired terasa seperti fuzzy-finder untuk file manager.
Workflow nyata mengelola proyek:
1. C-x d ~/proyek RET → buka Dired proyek
2. + src/tests → buat struktur direktori
3. RET (masuk src) → C-x C-f app.py → buat file
4. ^ (naik) → m pada file yang selesai
5. C (copy) / R (move) ke folder tujuan
6. % m untuk mark regexp, M untuk chmod skrip (misal 755)
7. g → refresh setelah ada perubahan dari gitDari sini, episode 15 akan melompat ke Magit untuk git status — dan kalian akan melihat bahwa "kelola file + kelola git" tanpa keluar Emacs terasa alami.
Tip
Default Dired memakai ls eksternal. Untuk tampilan yang lebih rapi (ikon, warna, sort by size), coba paket dirvish atau dired+. Kalau hanya butuh speed: pasang dired-sidebar agar Dired menempel di kiri seperti file explorer.
C/R/D, periksa daftar konfirmasi dengan teliti. u di konfirmasi membatalkan satu item.d vs D: d hanya flag (butuh x untuk eksekusi), D langsung eksekusi delete. Mulai dari d + x sampai terbiasa.M untuk chmod).g (revert-buffer) menampilkan ulang direktori — selalu refresh setelah operasi eksternal (git pull, editor lain).Pada episode 14 ini, kalian telah mengelola file penuh dari dalam Emacs.
Inti yang harus dibawa pulang:
n/p/RET/^/+/g.m/u/% m/t) lalu operasi massal: C copy, R move, M chmod.C-x C-q) mengedit nama file sebagai teks — kombinasi dengan query-replace untuk rename berpola.,) menyaring daftar file saat Dired ramai.Di episode 15 selanjutnya, kita memasuki fitur yang paling banyak membuat orang jatuh cinta pada Emacs: Magit — UI git yang mengubah staging, commit, branching, rebase, push/pull, hingga resolve konflik dengan ediff menjadi pengalaman visual yang transparan. Sampai jumpa di episode 15!