Ulangi perintah terakhir ke-n di vim

13

Saya perhatikan vim bisa sangat intuitif, tetapi saya kesulitan menemukan cara untuk mengulangi perintah kedua-ke-terakhir (atau ketiga-ke-terakhir, keempat-ke-terakhir, dll.). Dengan mengetik .dalam mode normal itu akan mengulangi perintah terakhir. Menekan 3.akan mengulangi perintah terakhir tiga kali.

Katakanlah saya ketik oHello<Esc>kemudian A, World!<Esc>. Sekarang saya mengerti

Hello, World!

di layar. Sekarang, katakan saya ingin mendapatkannya

Hello, World!
Hello
Hello
Hello

tanpa mengetik Hello. Apakah vim menyimpan histori melampaui satu perintah, jadi saya bisa mengetikkan sesuatu seperti 3,2.(yaitu mengulangi perintah kedua hingga terakhir tiga kali)?

redbmk
sumber
2
Ingat Anda dapat merekam apa pun sebagai makro ( qaoHello<esc>qlalu @aulangi Hellokapan pun Anda inginkan.) Ada juga @@untuk mengulang makro yang terakhir digunakan.
James McLaughlin
2
Saya berasumsi Anda juga bisa melakukannya 3@auntuk mengulangi makro berulang kali
redbmk

Jawaban:

8

Tidak, .perintah di vimtidak memiliki riwayat, juga tidak ada riwayat pengulangan untuk perintah mode normal yang saya ketahui. Untuk jumlah penekanan tombol paling sedikit, saya akan merekomendasikan 4oHello<Esc>3jA, World<Esc>. Jika sudah selesai oHello<Esc>A, World<Esc>, Anda bisa mengikutinya dengan uyy<Ctrl-r>3p.

jw013
sumber
4

Ada plugin ini bernama RepeatLast.vim yang melakukan apa yang Anda inginkan tetapi dengan biaya: vim Anda selalu dalam mode makro perekaman. Anda dapat menginstalnya dengan manajer paket yang Anda gunakan seperti paket vim lainnya atau Anda dapat mengkloning dan menjatuhkannya ~/.vim/pluginjika Anda menggunakan vim atau ~/.config/nvim/plguinjika Anda menggunakan neovim. Untuk mengulangi tindakan kedua hingga terakhir, Anda harus mengetik 2\.dalam mode normal dan untuk mengulangi ke tindakan terakhir Anda harus mengetik <n>\.dalam mode normal.

http://www.vim.org/scripts/script.php?script_id=4381 https://github.com/vim-scripts/RepeatLast.vim

Sassan
sumber
2
@Sassan, dapatkah Anda mengedit jawaban dan dengan cepat menjelaskan cara memasang plugin ini, dan bagaimana tepatnya itu dapat digunakan untuk menyelesaikan masalah OP?
terdon
2
@terdon jika seseorang membaca jawaban saya dan tidak tahu bagaimana menggunakan manajer paket, itu lebih baik baginya untuk penasaran dan pergi menghabiskan waktu dan belajar tentang manajer paket di vim. Sama untuk orang yang membacanya dan tidak tahu tentang mendapatkan informasi dari docs / README.md untuk vim plugins.
Sassan
Itu bukan intinya. Jawaban yang hanya berupa tautan tidak dianggap sebagai jawaban . Jawaban harus lengkap dan menawarkan semua informasi yang diperlukan untuk menerapkan solusi yang diusulkan. Terima kasih atas hasil editnya!
terdon
1
Sebenarnya saya setuju, plugin ini terlalu hack untuk digunakan oleh orang-orang yang tidak tahu cara menginstalnya :)
Boris Churzin