Menguasai undo dan redo di nano: membatalkan kesalahan dengan M-U, mengulang perubahan dengan M-E, memahami batas undo per sesi, serta memanfaatkan riwayat posisi file dengan --positionlog dan anchors agar nano kembali membuka file di posisi terakhir kalian tinggalkan

Setelah di episode 6 kalian mengganti teks dengan regex, muncul pertanyaan klasik: "bagaimana kalau replace-nya salah?" Jawabannya ada di episode ini: undo. Kemampuan membatalkan kesalahan bukan sekadar kenyamanan — ini jaring pengaman yang membuat kalian berani bereksperimen dengan operasi yang sebelumnya terasa berisiko, seperti replace global atau penghapusan blok besar.
Mengapa undo penting di lingkungan produksi? Karena kesalahan edit file config sering tidak terlihat sampai service restart. M-U adalah garis pertahanan pertama sebelum kamu panik membaca log.
M-U (Undo) membatalkan perubahan terakhir. Setiap operasi edit — ketikan, cut, paste, replace, dan juga shifts — tercatat dalam riwayat undo:
printf 'alpha\nbeta\ngamma\n' > ~/nano-lab/undo.txt
nano ~/nano-lab/undo.txtDi dalam nano, coba alur ini:
M-U — teks hilang.beta dengan ^K, tekan M-U — baris kembali.M-U — kembali ke teks asli.Tip
M-U juga membatalkan perpindahan kursor besar (misalnya M-> ke akhir file) — jadi jika kursor "melompat" dan kalian tidak yakin kenapa, M-U bisa mengembalikannya. Coba saja saat terjadi.
M-E (Redo) mengulang kembali perubahan yang sudah dibatalkan oleh undo. Aturannya sederhana: redo hanya mungkin selama belum ada operasi baru setelah undo. Jika kalian mengubah teks apa pun setelah M-U, jalur redo terputus dan M-E tidak akan berfungsi.
M-U → mundur satu langkah (undo)
M-E → maju satu langkah (redo)Ini adalah kebiasaan kerja yang aman: saat ragu dengan sebuah perubahan besar, lakukan M-U untuk melihat keadaan sebelumnya, lalu M-E untuk mengembalikan — tanpa kehilangan apa pun.
Beberapa hal yang perlu kalian ketahui tentang riwayat undo nano:
^C, ^W search) umumnya tidak masuk riwayat.^O). Undo bukan pengganti backup — di episode 14 kita pasang jaring pengaman kedua.Sejak nano 8.5, ada fitur positionlog: nano mengingat posisi terakhir kursor setiap file dan membuka ulang di sana. Aktifkan lewat baris perintah atau nanorc:
nano --positionlog /etc/hostsset positionlogDengan set positionlog, nano menyimpan posisi (baris & kolom) per file di file log internal. Saat membuka file yang sama lagi, kursor langsung berada di tempat terakhir ditinggalkan — sangat menghemat waktu saat mengerjakan file panjang secara bertahap.
Note
--positionlog juga menyimpan anchors (penanda yang kita bahas di episode 17) — sehingga bookmark kalian di file besar bertahan antar sesi. Ini kombinasi yang pas untuk workflow membaca kode atau config yang panjang.
Skenario nyata: kalian sedang mengedit /etc/nginx/nginx.conf, tidak sengaja menghapus blok server dan sudah menekan ^O. Rangkaian penyelamatan:
M-U untuk membatalkan penghapusan.^O lagi untuk menyimpan hasil undo.nano --positionlog nginx.conf — kursor kembali ke posisi terakhir, dan kalian bisa menilai kerusakan.printf 'server {\n listen 80;\n server_name example.com;\n}\n' > ~/nano-lab/nginx.conf
nano --positionlog ~/nano-lab/nginx.confHapus baris server_name, tekan M-U untuk mengembalikan, lalu ^O untuk menyimpan.
Pada episode 7 ini, kalian telah menguasai undo/redo dan riwayat posisi nano.
Inti yang harus dibawa pulang:
M-U membatalkan perubahan; M-E mengulang yang sudah dibatalkan.--positionlog / set positionlog mengingat posisi kursor tiap file.Di episode 8 selanjutnya, kita akan membahas line numbers & wrap — menampilkan nomor baris dengan M-N, mengaktifkan soft wrap untuk baris panjang, melompat ke awal/akhir file dengan M-</M->, dan memanfaatkan smooth horizontal scroll nano 9.0 untuk membaca config yang lebar. Tampilan yang nyaman adalah fondasi produktivitas!