Apa itu rekaman Vim dan bagaimana cara menonaktifkannya?

761

Saya terus melihat recordingpesan di bagian bawah jendela gVim 7.2 saya.

Apa itu dan bagaimana cara mematikannya?

Vehomzzz
sumber
55
Untuk mematikan rekaman vim untuk selamanya, tambahkan map q <Nop>ke file .vimrc Anda.
Joey Adams
4
Saya tidak percaya Anda ingin mematikan rekaman! Saya akan menunjukkan sembulan yang benar-benar menyebalkan, "Apakah Anda yakin?" jika seseorang meminta untuk mematikannya (atau mungkin ingin memberikan opsi seperti yang diberikan pembaruan Windows 10).
0xc0de

Jawaban:

1055

Anda mulai merekam dengan q<letter> dan Anda bisa mengakhirinya dengan mengetik qlagi.

Perekaman adalah fitur yang sangat berguna dari Vim.

Ini merekam semua yang Anda ketik. Anda kemudian dapat memutar ulang hanya dengan mengetik @<letter>. Rekam pencarian, pergerakan, penggantian ...

Salah satu fitur terbaik Vim IMHO.

yogsototh
sumber
109
Seperti yang terlihat di tempat lain, q diikuti oleh register. Bagian yang sangat keren (dan mungkin non-intuitif) dari ini adalah bahwa ini adalah register yang sama yang digunakan oleh hal-hal seperti delete, yank, dan put. Ini berarti Anda dapat menarik teks dari editor ke dalam register, kemudian menjalankannya sebagai perintah.
Cascabel
68
Satu hal lagi yang perlu diperhatikan adalah Anda dapat menekan nomor apa pun sebelum @ untuk memutar ulang rekaman yang berkali-kali seperti (100 @ <letter>) akan memainkan tindakan Anda 100 kali
Tolga E
7
Anda bisa menambahkannya setelah itu, dengan mengedit register dengan put / yank. Tapi saya tidak tahu mengapa Anda ingin menghidupkan atau mematikan rekaman sebagai bagian dari makro. ('q' tidak memengaruhi apa pun ketika diketik dalam mode sisipkan.)
anisoptera
3
@Wade "- ini disebut register default.
Cascabel
4
and how to turn offjuga pertanyaan
n611x007
103

Ketik :h recordinguntuk mempelajari lebih lanjut.

                           * q *  * merekam * 
q {0-9a-zA-Z "} Rekam karakter yang diketik ke dalam register {0-9a-zA-Z"}
                        (huruf besar untuk ditambahkan). Perintah ' q ' dinonaktifkan
                        saat menjalankan register , dan itu tidak berfungsi di dalam
                        sebuah pemetaan . {Vi: tidak ada rekaman}

q                        Menghentikan perekaman . (Catatan Implementasi: ' q ' itu
                        berhenti merekam tidak disimpan dalam register , kecuali
                         itu adalah hasil pemetaan ) {Vi: tidak ada rekaman}


                                                        * @ *
@ {0-9a-z ". = *} Jalankan isi register {0-9a-z". = *} [Hitung] 
                        kali. Perhatikan bahwa daftar ' % ' (nama saat ini
                        file) dan ' # ' (nama file alternatif) tidak boleh
                        bekas. Untuk " @ = " Anda diminta memasukkan
                         ekspresi . Hasilnya adalah ekspresi
                        dieksekusi. Lihat juga | @: |. {Vi: register hanya bernama}
singkat
sumber
31

Pengetikan qmemulai perekaman makro, dan perekaman berhenti ketika pengguna menekan qlagi.

Seperti yang disebutkan Joey Adams, untuk menonaktifkan perekaman, tambahkan baris berikut ke .vimrcdalam direktori home Anda:

map q <Nop>
mitchus
sumber
11
hanya jawab tentang "cara mematikan" bagian dari pertanyaan. Ya, itu membuat rekaman tidak dapat diakses, mematikannya secara efektif - setidaknya tidak ada yang mengharapkan vi untuk memiliki utas terpisah untuk kode ini, saya kira, termasuk saya.
n611x007
25

Seperti yang orang lain katakan, ini adalah rekaman makro, dan Anda mematikannya dengan q. Inilah artikel yang bagus tentang cara melakukannya dan mengapa ini berguna.

JeffH
sumber
15

Ini berarti Anda berada dalam mode "rekam makro". Mode ini dimasukkan dengan mengetik qdiikuti dengan nama register, dan dapat keluar dengan mengetik qlagi.

John Millikin
sumber
Ini sebenarnya dimasukkan dengan mengetik qdiikuti dengan nama register, yaitu 0-9, az, AZ, dan ".
ephemient
3
Sebenarnya, ini adalah q {0-9a-zA-Z "} - Anda dapat merekam makro ke dalam register apa pun (dinamai dengan digit, huruf,"). Jika Anda benar-benar ingin menggunakannya ... Anda mengeksekusi isi register dengan @ <register>. Lihat :help qdan :help @jika Anda tertarik menggunakannya.
Cascabel