Di Vim Anda dapat menekan .
untuk mengulangi perubahan terbaru, termasuk memasukkan teks.
Sementara di Emacs C-x
z
hanya mengulangi perintah terakhir. Saya sadar bahwa makro dapat digunakan di sini, tetapi lebih sering saya menyadari bahwa saya harus memasukkan kembali teks yang sama terlambat. Ketika saya perlu memasukkannya sekali lagi , mendefinisikan makro tidak ada gunanya.
T: Apakah ada cara untuk mengulangi penyisipan teks di dalam Emacs?
text-editing
ooi
sumber
sumber
C-f
, pencarian, dll.)? Jika itu masuk akal ...C-space
, pindahkan kursor,M-w
untuk menyalin) dan kemudianC-y
tempelkan waktu sebanyak yang diperlukan.Jawaban:
dot-mode
adalah "mode minor untuk mengulang pengetikan atau perintah," dan dapat melakukan apa yang Anda butuhkan. Ini pada dasarnya hanya mengulangi penyisipan / penghapusan terakhir yang Anda lakukan. Ini sangat mirip dengan.
di Vi (m).sumber
dot-mode
dilakukan dan bagaimana ia menyediakan fungsionalitas yang OP coba dapatkan?Anda dapat menggunakan
kmacro-edit-lossage
(C-x C-k l
) untuk itu: memungkinkan Anda melihat 300 penekanan tombol terakhir (termasuk penyisipan sederhana), dan mengeditnya sebagai makro.Untuk penggunaan sederhana, Anda cukup menemukan awal penyisipan yang ingin Anda ulangi, menghapus semua teks dari "Makro:" ke titik itu, dan tekan
C-c C-c
. Sekarang Anda memiliki makro yang dapat Anda gunakan untuk melakukan tindakan yang sama, seolah-olah Anda tidak lupa untuk merekamnya sejak awal.Sayangnya, ini gagal jika 300 penekanan tombol terakhir termasuk klik mouse.
Sunting: Kode berikut mengubahnya sehingga hanya tombol setelah acara mouse terakhir disimpan.
sumber
edmacro-fix-menu-commands
. Dibutuhkan argumen opsional yang dapat mengabaikan acara mouse. Tetapi saya tidak cukup tahu tentang sistem saran untuk membuatnya bekerja.Saya pikir
dabbrev-expand
fungsi bisa melakukan trik. Misalkan Anda telah mengetik beberapa kata: emacs, emotion, emoji, ... Lain kali Anda mengetik kata yang dimulai dengan 'em', Anda dapat menekanM-/
dan emacs akan mengusulkan Anda untuk memasukkan salah satu kata yang sudah dimasukkan. dimulai dengan 'em'. Tetap memukulM-/
dan emacs akan menunjukkan 'emoji', lalu 'emosi, lalu ...Anda mungkin juga memiliki pandangan untuk mengulang-kompleks-perintah . Contoh yang populer adalah: Anda ingin mengulangi perintah
query-replace
di banyak buffer yang berbeda selalu menggunakan argumen yang sama, ganti "pitt" dengan "patt".Anda menjalankannya sekali, pergi ke jendela yang berbeda, dan ketik
C-x ESC ESC
untuk menjalankannya lagi.Dan untuk menyelesaikannya, bolehkah saya menyarankan insert-repeat ? File el ini akan membantu Anda melakukan penyisipan, menggunakan semacam logika. Ini lebih seperti, "reapeat penyisipan terakhir, tetapi untuk setiap iterasi, argumen akan berubah.
Contoh ini dapat ditemukan di file el :
Saya harap itu akan membantu.
sumber
repeat
(yang OP sebutkan), tidak benar-benar berguna untuk penyisipan teks.Repeat-insert
perlu dipikirkan sebelum memasukkan teks, seperti makro. Tapidabbrev-expand
itu ide yang bagus!