Bisakah saya mengulang makro dengan .
perintah? Misalnya, saya ingin dapat mengetik:
@q...
dan memilikinya secara efektif memanggil @q
4 kali. Dengan perilaku default, ini bekerja hanya jika 'q' memegang perintah tunggal, misalnya dw
, x
atau iHello<esc>
. (Ini masuk akal, karena '.' Mengulangi perubahan terakhir , bukan penekanan tombol / perintah terakhir)
Saya juga senang memiliki pekerjaan ini dengan jumlah. Misalnya, mengetik:
3@q.
akan sama efektifnya dengan menjalankan @q
6 kali. Bagaimana saya bisa mengkonfigurasi perilaku ini?
Enter
@@
ulangi makro terakhir, jadi jika Anda menanyakan ini demi pemetaan dan semacamnya, itu akan bekerja untuk Anda.Jawaban:
Cobalah ini. Memetakan kembali
@
sehinggag@
(ditambah gerakan bonekal
) digunakan setelahnya, sehingga menjadi operator terakhir dan dapat diulangi.
.Saya sudah mencoba untuk menangani banyak kasus sudut yang saya bisa pikirkan. Anda bisa mengulanginya
@:
dengan.
. Hitungan ke@
atau.
dipertahankan untuk pers berikutnya.
.Ini rumit, dan saya tidak yakin bahwa sesuatu tidak akan pecah di suatu tempat di sepanjang jalan. Jadi tidak ada jaminan, garansi, atau janji dengan yang satu ini.
Secara pribadi, saya baik-baik saja memiliki perbedaan antara pengulangan berbutir halus
.
untuk perubahan terakhir, dan pengulangan makro@@
.EDIT
Saya pikir, setelah sejauh ini, saya mungkin juga menambahkan beberapa kode tambahan yang akan memungkinkan menekan
.
segera setelah merekam makro untuk memutarnya kembali.sumber
.vimrc
).
segera setelah perekaman.\<plug>qstop
seharusnya sebelumq
dalam fungsi QStartUntuk mengulang makro terakhir Anda Anda dapat menggunakan
@@
sehingga3@@
pada dasarnya akan menjalankan @q 3 kali. Namun, keystrokes @ dapat menjadi sulit, jadi di .vimrc saya, saya memiliki baris:Ini memungkinkan saya untuk menggunakan kunci pemimpin saya (,) plus m untuk menjalankan makro terakhir. Kemudian Anda bisa mengawali ini dengan angka untuk mengulang makro.
Sekarang
3,m
setara dengan3@@
. Total kunci yang sama dan tidak perlu menahan shift.EDIT : Setelah memikirkan kembali ini saya datang dengan makro baru.
nmap <leader>. @@
Ini juga berfungsi ketika didahului oleh angka jadi3,.
sekarang3@@
Senang melihat karya ini sehingga saya bisa mengirimkan surat makro dan mengulangi makro bukannya makro terakhir.sumber
3@q.
menjalankan@q
6 kali. Ini tidak melakukan itu.3@q.
? Tampaknya Anda mungkin hanya menambahkannya dengan hitungan. Saya cenderung mengatur pencarian sebelum memulai makro kemudian gunakann
di makro untuk melompat ke awal di mana ia dapat diputar ulang.Anda bisa merekam penggunaan makro di makro lain, dan ulangi itu.
Sekarang
3@r
seperti berlari@q
enam kali.sumber
Secara default
space
di vim adalah "move right 1 karakter" yang sudah dicakup olehl
, jadi saya telah memetakan ulang ruang untuk menjalankan kembali makro dari buffer q:Untuk menggunakan, cukup rekam makro dengan yang
qq
pertama, hentikan perekaman denganq
dan kemudian tekanspace
untuk memutar ulang.sumber
Karena saya tidak menggunakan
,
dan menyukai solusi sederhana yang mudah diketik, ini berfungsi untuk saya:sumber