Saya tahu bahwa saya dapat menggunakan .
untuk mengulangi perintah pengeditan terakhir.
Apakah ada cara untuk mengulangi perintah manipulasi UI terakhir? Sebagai contoh, saya dapat menulis 10<C-W>-
untuk mengecilkan jendela dengan sepuluh baris. Itu akan baik untuk dapat tekan ⟨ beberapa kunci ⟩ untuk dengan mudah mengulangi perintah ini jika saya ingin mengecilkan lebih.
repeated-commands
wchargin
sumber
sumber
fz
dan kemudian10;
? Bagaimana dengan:tabm +1
? Apakah ini semua harus dibuat khusus?Jawaban:
Perintah dot
.
berfungsi karena Vim "melacak" perintah yang mengubah konten buffer. Jika Anda menjalankan:echo b:changedtick
, Anda akan melihatnya bertambah dengan setiap perubahan pada buffer saat ini.Tetapi Vim tidak "melacak" perintah-perintah yang tidak diedit. Jadi, tidak, apa yang Anda minta tidak bisa dilakukan.
sumber
Tidak ada cara untuk melakukan ini secara default di vim karena vim tidak melacak wincmd yang sebelumnya dieksekusi. Namun, dimungkinkan untuk melakukan ini melalui beberapa pemetaan cerdas:
Perhatikan bahwa jika Anda memiliki pemetaan yang menggunakannya,
<C-w>
mereka hanya bisa diulang jika bukan darinore
varietasnya. Setiap mata uang yang dikeluarkan menggunakan:wincmd
tidak akan diulang. Juga, setiap wincmds yang berisi lebih dari satu karakter tidak dapat dilakukan (seperti<C-w>gf
) .Topik Bantuan yang Relevan
:help v:count
:help getchar()
:help nr2char()
:help expr1
:help :wincmd
:help :execute
:help :for
:help :map-<silent>
:help c_CTRL-U
:help <SID>
sumber
.
berperilaku dengan hitungan. Ketika hitungan diberikan.
, hitungan sebelumnya diabaikan. Jadi2dd
diikuti oleh3.
akan menghapus 2 baris dan kemudian 3 baris; sebaliknya, dengan pemetaan Anda,2<C-w>-
diikuti oleh3Q
akan mengecilkan jendela dengan 2 garis dan kemudian oleh 6 (= 2x3) garis. Perilaku itu baik-baik saja, tetapi menyenangkan untuk menggambar dari perintah Vim built-in analog ketika memilih bagaimana perilaku kustom harus berperilaku.The submode Plugin dapat membantu dengan ini. Anda bisa mendefinisikan "submode" yang Anda masukkan dengan mengetik
<C-W>-
, di mana Anda telah menetapkan-
(dan mungkin+
) untuk melanjutkan mengubah ukuran jendela.sumber
Ada plugin lain yang disebut repmo.vim ("repeat motions") yang dapat melakukan apa yang Anda inginkan.
Tetapi Anda perlu menentukan gerakan mana (atau tindakan secara umum) yang ingin Anda ulangi. Milik saya saat ini dikonfigurasi seperti ini:
Jadi setelah melakukan itu 5 CTRL-W +saya bisa menekan ;untuk mengulanginya sebanyak yang diinginkan.
Plugin berfungsi dengan membuat pemetaan untuk masing-masing tombol yang ditentukan.
Ketika
f
ataut
digunakan, pemetaan;
dan,
dihapus kembali ke perilaku default mereka.Saya menemukan pemetaan untuk
g;
sangat berguna, untuk kembali ke titik edit sebelumnya. g; ; ; ;sumber
,
tindakan segera mendesak, dan5,
juga berfungsi seperti yang diharapkan. Apakah mungkin Anda telah mengatur Andamapleader
ke,
?