Mempertimbangkan:
apple
pear
Letakkan kursor Anda di baris dan jenis pertama Yp
, menghasilkan:
apple
apple
pear
Letakkan kursor Anda di pear
baris dan ketik .
untuk mengulangi perintah terakhir. Ini hanya mengulangi p
(bukan kombinasi Yp
), menghasilkan:
apple
apple
pear
apple
Saya ingin cara memberitahu .
untuk mengulangi perintah N terakhir. Sesuatu seperti 2.
mengulangi kombinasi Yp
untuk menghasilkan:
apple
apple
pear
pear
Ofc itu tidak akan berhasil - ini mengulangi p
dua kali. Tapi idenya adalah "ulangi urutan 2 perintah terakhir".
Saya tahu saya bisa q
-mengatur urutan perintah dan mengulanginya dengan @@
, tetapi solusi ini tidak ideal, karena mengharuskan Anda untuk telah merencanakan sebelumnya, sedangkan dalam praktiknya Anda sering tidak menyadari Anda perlu mengulangi sesuatu sampai setelah kamu sudah melakukannya.
Apakah ada cara untuk mencapai apa yang saya inginkan?
Hadiah hiburan: Jika hal di atas tidak memungkinkan, apakah ada cara untuk mengulang pemutaran makro terakhir? Misalnya, jika saya mengetik @@
untuk memutar makro terakhir saya, saya ingin berikutnya .
setara dengan mengetik @@
lagi - yang tidak (misalnya, jika hasil @@
tergantung pada baris Anda berada di)
nno <silent> @@ @@:sil! call repeat#set('@@', v:count1)<CR>
Tetapi agar bisa berfungsi, Anda perlu menginstal plugin ini: github.com/tpope/vim-repeatJawaban:
Vim hanya menyimpan perintah yang terakhir dieksekusi, dan hanya itu yang diulangi oleh
.
; menurut saya, hal lain akan sulit ditangani.Jika Anda merasa perlu mengulangi
Yp
kombo sebagai satu kesatuan, Anda harus menjadikannya satu perintah tunggal. Plugin repeat.vim Tim Pope memungkinkan untuk melakukannya dengan mudah untuk pemetaan khusus. Tentu saja, jika Anda memilih kunci pendek [urutan] untuk pemetaan, Anda dapat dengan cepat mengetik ulang itu (bukan.
), dan bahkan menghindari integrasi repeat.vim.BTW, plugin LineJuggler saya menyediakan
]d
pemetaan untuk menduplikasi baris saat ini, dan itu mendukung pengulangan melalui repeat.vim.sumber
Di
Yp
, satu-satunya "perubahan" yang harus diulang adalahp
. Satu-satunya cara yang saya tahu untuk mengubah perilaku.
dalam mode normal adalah dengan menambahkany
kecpoptions
opsi:yang memungkinkan Anda mengulangi sentakan terakhir serta perubahan terakhir.
Tapi itu tidak mengubah apa pun untuk masalah Anda karena
Yp
masih ada dua perintah: yank diikuti oleh perubahan.Saya tidak berpikir Anda bisa mendapatkan apa yang Anda inginkan tanpa skrip non-sepele. Apakah Anda melihat bagian skrip vim.org ?
sumber
Saya sering menggunakan
map
untuk mencapai efek ini. Sebagai contoh:Kemudian menekan
F12
berulang kali akan mengeksekusiYpYpYp
dll. Jika Anda ingin pindah ke baris berikutnya setelah setiap rekat, petakan kunci untukYp+
sebaliknya.sumber
Alat luar biasa yang merupakan plugin RepeatLast (oleh @joeytwiddle milik kami sendiri ) menyediakan fungsionalitas ini saja, melalui metode tidak suci dalam merekam semua yang Anda lakukan sebagai makro.
Ini menyediakan sejumlah pemetaan baru, tapi, jika saya membaca dokumentasi dengan benar, untuk melakukan pengeditan Anda menggambarkan Anda bisa menggunakan urutan perintah (menganggap Anda menggunakan default
<leader>
dari\
):Yp
Tarik dan tempel / tempelkan barisapple
,j
Turunkan satu baris sehingga kursor sekarang berada dipear
garis,\D
lupakanj
perintah,2\.
Ulangi kedua perintahY
danp
sumber