Artikel ini mengatakan bahwa "Emacs telah diulang karena Anda dapat membalikkan arah saat membatalkan, dengan demikian membatalkan membatalkan".
Apa artinya ini? Bagaimana cara pengguna melakukan ulang dengan Emacs?
Artikel ini mengatakan bahwa "Emacs telah diulang karena Anda dapat membalikkan arah saat membatalkan, dengan demikian membatalkan membatalkan".
Apa artinya ini? Bagaimana cara pengguna melakukan ulang dengan Emacs?
Jawaban:
Versi singkat: dengan membatalkan undo. Jika Anda membatalkan, dan kemudian melakukan perintah non-editing seperti C-f, maka membatalkan berikutnya akan membatalkan membatalkan, menghasilkan pengulangan.
Versi yang lebih panjang:
Anda dapat menganggap membatalkan sebagai operasi pada setumpuk operasi. Jika Anda melakukan beberapa perintah (bahkan perintah navigasi seperti C-f) setelah urutan operasi undo, semua undo didorong ke tumpukan operasi. Jadi membatalkan berikutnya membatalkan perintah terakhir. Misalkan Anda memiliki urutan operasi yang terlihat seperti ini:
Sekarang, Anda membatalkan. Ini membatalkan tindakan terakhir, menghasilkan daftar berikut:
Jika Anda melakukan sesuatu selain membatalkan pada saat ini - katakanlah, C-ftumpukan operasi terlihat seperti ini:
Sekarang, ketika Anda membatalkan, hal pertama yang dibatalkan adalah yang dibatalkan. Menghasilkan tumpukan asli Anda (dan status dokumen):
Jika Anda melakukan perintah modifikasi untuk memecahkan urutan undo, perintah itu ditambahkan setelah undo dan dengan demikian hal pertama yang harus dibatalkan setelahnya. Misalkan Anda mundur dari "bar" alih-alih memukul C-f. Maka Anda akan memilikinya
Penambahan / penambahan ulang ini terjadi tanpa batas waktu. Dibutuhkan sedikit membiasakan diri, tetapi itu benar-benar memberi Emacs mekanisme undo / redo yang sangat fleksibel dan kuat.
sumber
Untuk membatalkan: C-_
Untuk mengulang setelah membatalkan: C-g C-_
Ketikkan beberapa kali C-_ untuk mengulang apa yang telah dibatalkan oleh C-_ Untuk mengulang perintah emacs beberapa kali, jalankan perintah Anda lalu ketik C-xzdan kemudian ketik berkali-kali pada ztombol untuk mengulangi perintah (menarik ketika Anda ingin menjalankan beberapa kali makro)
sumber
C-u
, misalnyaC-u 8 *
(memasukkan delapan * di mana tanda sisipan berada). Jadi Anda bisa gunakanC-u x C-_
untuk membatalkan langkah x .C-x e
), Anda bisa menekane
sesering yang Anda perlukan untuk menjalankannya lagi.C-/
danC-x u
alternatif membatalkan ikatan kunci, setara denganC-_
. Saya lebih sukaC-/
karena lebih mudah dipukul.C-g C-_
akan "mengulang setelah membatalkan", itu hanya berlaku saat Anda pertama kali menekan kombinasi. Setelah itu, ulangi kunci undo Anda tanpaC-g
. Jadi untuk mengulang tiga kali tepat setelah kehancuran, ketikC-g C-_ C-_ C-_
. Jika Anda mengetikC-g C-_ C-g C-_ C-g C-_
, Anda hanya akan berputar-putar, membatalkan pengulangan dari ...C-/
C-/
C-/
C-g
C-/
C-g
C-/
C-/
. Catatan yangC-g
tidak diulang.C-g
C-/
C-g
C-/
C-/
Jika Anda telah menekan tombol apa saja (baik mengetik karakter atau hanya menggerakkan kursor) sejak perintah undo terakhir Anda, tidak perlu mengetik
C-g
sebelum undo / redo berikutnya.C-g
hanyalah kunci aman untuk memukul yang tidak melakukan apa-apa sendiri, tetapi dianggap sebagai kunci non-undo untuk menandai akhir dari urutan undo Anda. Menekan perintah lain sepertiC-f
akan bekerja juga; hanya saja itu akan memindahkan kursor dari tempat Anda memilikinya.Jika Anda menekan
C-g
atau perintah lain ketika Anda tidak bermaksud, dan Anda sekarang kehancuran di arah yang salah, cukup tekanC-g
untuk membalikkan arah Anda lagi. Anda harus membatalkan semua langkah melalui ulang dan tak sengaja yang tidak disengaja sebelum Anda mencapai undo yang Anda inginkan, tetapi jika Anda terus memukulC-/
, pada akhirnya Anda akan mencapai kondisi yang Anda inginkan. Faktanya, setiap negara bagian yang pernah dijangkau oleh penyangga dapat dijangkau, jika Anda menekanC-g
sekali dan kemudian menekanC-/
waktu yang cukup.Pintas alternatif untuk
undo
, selainC-/
, adalahC-_
,C-x u
, danM-x
undo
.Lihat Undo dalam Manual Emacs untuk detail lebih lanjut tentang sistem undo Emacs.
sumber
Bagi mereka yang ingin memiliki fungsionalitas undo / redo yang lebih umum, seseorang telah menulis
undo-tree.el
. Ini memberikan tampilan dan nuansa non-Emacs undo, tetapi memberikan akses ke seluruh 'pohon' dari undo history.Saya suka sistem undo bawaan Emacs, tetapi menganggap paket ini sangat intuitif.
Inilah komentar dari file itu sendiri:
sumber
Waspadalah terhadap suatu kekalahan membatalkan pohon untuk mengulang !
Banyak “starter kit” populer (prelude, purcell, spacemacs) dibundel dengan undo-tree. Sebagian besar (semua?) Bahkan mengaktifkannya secara otomatis. Seperti disebutkan, undo-tree adalah cara praktis untuk memvisualisasikan dan melintasi pohon undo / redo. Prelude bahkan memberinya kunci-kunci (
uu
), dan jugaC-x u
.Masalahnya adalah: undo-tree tampaknya merusak standar dan pengikatan Emacs yang terkenal redo :
C-g C-/
.Sebaliknya, kamu bisa menggunakan kunci simetris ini untuk undo / redo :
Ini berguna karena kadang-kadang Anda ingin mengulang dengan cepat tanpa membuka visualizer.
sumber
Saya merasa sangat
redo.el
berguna untuk melakukan undo / redo "normal", dan saya biasanya mengikatnya ke CSz dan membatalkan ke Cz, seperti ini:Cukup unduh file, letakkan di path lisp Anda dan rekatkan di atas di file Anda
.emacs
.sumber
Emacs 28 menambahkan perintah redo (dipanggil
undo-redo
).Jika Anda ingin memiliki undo / redo yang lebih khas, perintah berikut ini dapat digunakan.
sumber
Jika Anda ingin mengulang operasi terakhir, lakukan hal berikut.
ESC
C + /
)sumber
Secara default, mengulang di Emacs memerlukan menekan Cg, lalu membatalkan.
Namun dimungkinkan menggunakan bawaan Emacs untuk membatalkan perintah redo juga.
Paket undo-fu , menggunakan fungsi undo bawaan bawaan Emacs untuk mengekspos undo dan redo.
sumber