Saya punya file dengan banyak baris. Saya telah merekam makro yang melakukan operasi pada satu baris. Saya ingin mengulangi makro itu di semua baris yang tersisa di file. Apakah ada cara cepat untuk melakukan ini?
Saya mencoba Ctrl + Q, menyoroti satu set garis, dan menekan @@, tapi itu sepertinya tidak berhasil.
vim
vim-macros
Jordan Parmer
sumber
sumber
Jawaban:
Gunakan perintah normal dalam mode Ex untuk menjalankan makro pada banyak / semua baris:
Jalankan makro disimpan dalam register sebuah pada baris 5 sampai 10.
Jalankan makro yang disimpan dalam register a pada baris 5 hingga akhir file.
Jalankan makro yang disimpan dalam register a di semua baris.
Mengeksekusi toko makro dalam register yang di semua lini cocok pola .
Untuk menjalankan makro pada garis yang dipilih secara visual, tekan V dan j atau k hingga daerah yang diinginkan dipilih. Kemudian ketik
:norm! @a
dan amati baris input berikut ditampilkan.Masukkan : bantu normal dalam vim untuk membaca lebih lanjut.
sumber
:norm! @a
:
setelah menyoroti garis-garis, baris input Ex sebaliknya akan membaca:'<,'>
yang kemudian akan Anda tambahkan apa yang disarankan Kevin. Ini akan membuat perintah akhir baca::'<,'>norm! @a
.!
Menghindari remapping kunci oleh pengguna. Anda mungkin tidak membutuhkannya, tetapi jawaban yang berfungsi untuk semua orang membutuhkannya.Gunakan global untuk menjalankan makro 'a' di semua baris yang berisi 'pola'
Untuk bantuan, periksa:
:help global
.sumber
Anda juga dapat melakukan ini:
Dalam mode normal:
Sebagai contoh:
Terapkan makro dalam register q ke 1000 baris berikutnya.
sumber
:%norm! @a
danvGG :norm! @a
j
perintah untuk turun ke baris berikutnya kalau tidak ia akan mencoba menerapkannya ke baris yang sama.Ada juga sebuah plugin bernama RangeMacro, melakukan apa yang Anda inginkan! Untuk semua orang yang tidak bisa menebak namanya, apa fungsinya: ia mengulangi makro yang direkam untuk setiap baris dalam rentang tertentu, tidak peduli apakah dengan seleksi visual atau dengan: 40,50 /: +10
Lihat http://www.vim.org/scripts/script.php?script_id=3271
sumber