Bisakah saya melihat riwayat penekanan tombol dalam mode normal?

32

Saya tahu bahwa Vim menyimpan riwayat untuk mantan perintah, pencarian, lompati lokasi, perubahan, dan mungkin yang lainnya.

Dengan showcmdset, Vim juga menunjukkan kepada Anda tombol apa yang telah Anda masukkan sejauh ini untuk perintah mode normal, sampai perintah itu dijalankan.

Terkadang, ketika dalam mode normal, saya salah ketik dan tindakan terjadi. Saya dapat membatalkan tindakan ini, tetapi kadang-kadang saya ingin tahu bagaimana pengeditan selama kesalahan saya terjadi. Terkadang hasil edit terlihat keren dan saya ingin tahu bagaimana mengulanginya di masa mendatang.

Jadi, apakah ada cara untuk melihat riwayat penekanan tombol dalam mode normal, lebih disukai dibatasi ketika edit atau tindakan yang sebenarnya (seperti perubahan gerakan atau mode) terjadi?

John O'M.
sumber
4
Kemungkinan terkait: drbunsen.org/vim-croquet
wchargin

Jawaban:

20

Mengikuti tautan dari @WChargin sedikit lebih jauh, saya menemukan ini:

Anda dapat memulai vim dengan opsi -watau -Wsebagai berikut:

vim -w keys.txt my_file

Semua karakter yang Anda ketik direkam dalam file {scriptout}, hingga Anda keluar dari Vim.

-wakan menambahkan ke file yang ditentukan jika ada; -Wakan menimpanya.

Itu tidak cukup untuk mendapatkan apa yang Anda inginkan, tetapi itu adalah arah yang benar.

Pembaruan: Sepertinya vim sebenarnya mendukung semua penekanan tombol sampai Anda keluar dari vim, tetapi ada tambalan satu baris di sini yang akan segera menulis penekanan tombol.

xthrd
sumber
Terima kasih! Saya menggunakan ini sebagai titik awal untuk melihat kode sumber. Sepertinya -w menyimpan setiap penekanan tombol, bukan hanya perintah mode normal, tetapi Anda benar: itu adalah arah yang benar!
John O'M.
@xthrd, bagaimana keys.txtfile ini diformat / terstruktur? Saat saya gunakan -w, menambahkan selalu terjadi dalam garis yang sangat panjang; dan, ada karakter aneh yang ditampilkan: di bawah UTF-8, setiap kali saya membuka file di buffer baru, saya akan mendapatkannya €齛. Ini adalah penanda yang baik dengan sendirinya, tetapi akan lebih bagus jika log dapat diurai secara opsional.
llinfeng
@ linfeng Tidak diformat sama sekali. Ini benar-benar hanya file yang berisi penekanan tombol sesuai urutan pembuatannya. (Meskipun perhatikan bahwa jika beberapa penekanan tombol dilakukan <cr>, maka file tersebut akan berisi linebreak.) Ini karena tujuan utama adalah untuk membuat file yang dapat diputar ulang dengan -sopsi. Tapi mengapa tidak mencobanya sendiri?
Kaya
@ Rich Terima kasih telah menjelaskan. Saya telah menggunakan mekanisme pelacakan kunci ini untuk men-debug masalah yang memulai pencarian saya. [Pelajaran saya adalah: jangan pernah memetakan Wuntuk baris perintah.]
llinfeng
-4

Ada q:yang menunjukkan sejarah perintah.

Saya juga merasa berguna bahwa Anda dapat menekan di perintah yang diselesaikan sebagian untuk menelusuri pertandingan. Misalnya, /abc menekan ke atas akan menggilir riwayat pencarian Anda dimulai dengan 'abc'

Collin Peters
sumber
5
q: menunjukkan ex command history, dan berguna, tetapi bukan log dari perintah normal, seperti "ad2tn (hapus ke register a sampai n kedua)
John O'M.
Jangan lupa bahwa ketika sedang mengedit perintah, Anda dapat memunculkan baris saat ini di editor sejarah dan menggunakan vi untuk mengedit baris dengan menekanCtrl+f
Sukima