Saat menggunakan set showcmd
Vim menunjukkan perintah parsial di baris terakhir layar. Misalnya, dalam mode Normal ketika mengetik perintah dt.
, baris terakhir ditampilkan dt
dan kemudian, ketika Anda menekan .
perintah selesai dan karena itu tidak ada yang ditampilkan.
Apakah ada cara untuk menunjukkan perintah penuh? Misalnya saat mengetik dt.gU(
, pertama dt.
akan ditampilkan; dan ketika mulai mengetik perintah kedua yang pertama akan dihapus, sehingga pada akhirnya hanya gU(
akan ditampilkan.
Ini bisa bermanfaat misalnya dalam menggambarkan GIF; dan untuk memeriksa apakah Anda mengetik apa yang Anda inginkan jika Anda menghadapi beberapa hasil yang tidak terduga.
options
command-history
Gonçalo Ribeiro
sumber
sumber
dt
ditampilkan karena operator saat ini sedang menunggu keputusan. Setelah diberi gerakan, itu bukan lagi operator yang tertunda. Misalkan kita melangkah lebih jauh, dan melakukandt.gU(gu)daw
atau lebih. Apakah semua itu "satu perintah penuh", atau apakah itu empat perintah penuh, atau yang lain?dt.gU(
ada 2 perintah:dt.
dangU(
.... Jadi yang Anda inginkan adalah menunjukkan semacam sejarah perintah (Vim sudah menunjukkan "comamnds penuh").src/normal.c
panggilan kodeclear_showcmd()
di beberapa tempat (normal_cmd()
,do_pending_operator()
,end_visual_mode()
). Saya bermain dengan membuang ke fileshowcmd_buf
pada titik-titik itu, yang terlihat cukup bagus, tetapi membuat saya cukup yakin bahwa Anda tidak bisa mendapatkan apa yang Anda inginkan tanpa memodifikasi kode sumber Vim dan membangunnya kembali. Tentu saja, melakukan hal itu mungkin sepadan dengan kerumitan untuk membuat gif Anda.Jawaban:
Saya tidak dapat menemukan cara untuk melakukan ini dalam Vim biasa. Namun, jika Anda bersedia untuk menambal Vim, yang berikut ini mungkin cocok untuk Anda.
Patch yang sangat sederhana (diterapkan pada Vim-7.4.052) menonaktifkan pembaruan aktual ke layar yang menghapus sejarah di akhir perintah normal. Ini dilakukan dengan mengembalikan apakah
showcmd_is_clear
disetel sebelum memperbarui tampilan atau tidak . (Atau, Anda dapat mengomentari pernyataan if dan hanya meninggalkan satureturn
baris asli . catatan : Tambalan di bawah tidak menempel dengan baik; Anda mungkin harus menerapkan ini dengan tangan, meskipun itu hanya satu kalimat pendek. catatan : Saya tidak mengomentari yang sebenarnyadisplay_showcmd()
karena tampaknya akan digunakan dalam mode visual untuk memperbarui tampilan jumlah baris yang dipilih atau hal-hal lain yang mungkin lainnya. Saya belum banyak menguji ini.Hasilnya terlihat seperti ini:
Beberapa hal menarik untuk diperhatikan:
j
,k
,b
, dllx
perintah benar-benar menjadidl
di showcmd_buf tersebut.:
perintah, atau memasuki mode penyisipan (setidaknya dalam pengaturan saya))"
, tetapi urutan kunci saya terlihat di jendela vim untuk register panjang saya yang sudah ditentukan.^[
di area showcmdsumber
Selain dari solusi John , ada cara lain untuk menampilkan semua penekanan tombol vim yang ditekan dengan menggunakan
-w
parameter yang merekam semua karakter yang Anda ketikkan dalam file. Masalahnya adalah, vim itu menulis penekanan tombol hanya ketika Anda keluar dari Vim. Beginilah cara kerja VimGolf .Untuk mengatasinya, Kana Natsuno datang dengan tambalan satu baris ini , yang menonaktifkan buffering
-w
opsi, sehingga Anda memiliki akses ke aliran penekanan tombol waktu nyata. Maka itu masalah membacanya (misalnyatail -f
), parsing atau Anda dapat mencoba menampilkannya di bilah status (:set statusline
).Lihat pembuatan kustom Vim menggunakan cabang live-stream-keystrokes Drew , untuk mendapatkan aliran penekanan tombol real-time.
Sumber: Vimprint - parser Vim keystroke di blog Drew Neil
Ini berguna jika Anda ingin mengungkapkan penekanan tombol yang ditekan Vim dalam tutorial video atau GIF.
sumber