Gunakan Kasing
Saya dalam mode normal. Saya tidak secara eksplisit berpikir tentang merekam makro, tetapi saya membuat satu perubahan perintah. Saya sekarang dapat mengulangi tindakan ini dengan menggunakan dot.
Saya sekarang menyadari itu adalah tindakan yang berguna untuk menyimpan dalam makro untuk digunakan nanti daripada mengetik seluruh perintah setiap waktu. Saya bisa menghadiri semua perubahan yang membutuhkan perintah ini sekarang dengan menggunakan titik, atau saya dapat melanjutkan dengan mengedit dan menggunakan perintah ini nanti dengan menyimpannya di makro.
Yang terakhir adalah apa yang ingin saya lakukan, tetapi cara termudah yang dapat saya pikirkan untuk melakukannya adalah tidak mudah - membatalkan perubahan saya, mulai merekam makro dan mengetik ulang perintah untuk membuat perubahan yang diperlukan dan berhenti merekam makro.
Apa yang saya sudah coba sejauh ini:
Merekam titik dalam makro tidak berfungsi karena merekam titik dan bukan perubahan yang dilakukan titik. (Misalnya, katakanlah perintah yang disimpan di titik adalah d5w
Jika Anda mulai merekam makro dan melakukan tindakan melalui. Berharap bahwa itu akan menghapus 5 kata setiap kali Anda menjalankan makro, maka itu tidak akan terjadi. Lain kali Anda menjalankan makro itu akan melakukan dot dan bukan perintah d5w
. Ini berarti bahwa jika Anda membuat perubahan lain setelah merekam makro - katakan hapus 3 kata menggunakan d3w
dan itu adalah perubahan terakhir yang Anda lakukan, maka ketika Anda menjalankan makro itu akan menghapus 3 kata-kata dan bukan 5, karena itu hanya berjalan .
)
sumber
Jawaban:
Vim tidak menyimpan riwayat perintah mode normal Anda. Jika Anda ingin menyimpan riwayat mode normal Anda, Anda dapat menggunakan yang berikut ini untuk menyimpannya ke file: https://vi.stackexchange.com/a/587/13848
Perintah mode normal biasanya pendek, jadi orang cukup mengetiknya dalam mode normal dan tidak mencoba membuat makro. Namun, jika Anda ingin membuat makro dari perintah mode normal, Anda dapat mengubahnya menjadi
Ex
perintah mode dan kemudian menyimpannya menjadi makro seperti yang ditunjukkan @wmmso. Anda dapat melakukan ini dengan menggunakannorm
perintah. Jadi jika Anda ingin menghapus 2 kata mulai dari posisi kursor saat ini, dan gunakan perintah mode normal dalamEx
mode digunakan:norm d2w
. (Ref: http://vimdoc.sourceforge.net/htmldoc/various.html#:norm , Jalankan perintah normal di atas jangkauan )Lebih baik menggunakan
Ex
perintah mode jika itu adalah perintah yang rumit, karena memungkinkan Anda untuk mengetikkan perintah lengkap dalam buffer, pastikan itu benar dan menyimpannya dalam sejarah baris perintah.Sekarang setelah Anda memiliki perintah mode normal dalam mode ex, Anda juga dapat menelusuri perintah seperti riwayat menggunakan
q:
, dan kemudian menyalinnya ke register menggunakan"ay$
, sementara pada baris berisi baris perintah yang ingin Anda simpan ke makro. Kemudian ketika Anda ingin menjalankan makro, Anda bisa menjalankannya menggunakan@a
sumber
d2w
?salin konten register ":" (yang baru saja Anda lakukan) ke register lain, mis., daftarkan:
Anda dapat menjalankannya lagi menggunakan
sumber
:
berisi perintah yang dieksekusi terakhir:command-name-goes-here
alih-alih perintah mode normal sepertid2w