Menyimpan makro vim

166

Apakah ada yang tahu bagaimana cara menyimpan / menggunakan kembali makro yang direkam dengan benar di dalam editor vim?

jnadro52
sumber

Jawaban:

217

Gunakan qdiikuti oleh surat untuk merekam makro. Ini hanya masuk ke salah satu register copy / paste sehingga Anda dapat menempelkannya seperti biasa dengan "xpatau "xPperintah dalam mode normal.

Untuk menyimpannya, Anda membuka .vimrc dan menempelkan konten, maka register akan ada saat berikutnya Anda memulai vim.
Formatnya kira-kira seperti:

let @q = 'macro contents'

Berhati-hatilah dengan kutipan. Mereka harus melarikan diri dengan benar.

Jadi untuk menyimpan makro bisa Anda lakukan:

  • Dari mode normal: qq
  • masukkan perintah apa pun
  • Dari mode normal: q
  • buka .vimrc
  • "qpuntuk memasukkan makro ke let @q = '...'baris Anda
Dan Olson
sumber
3
Juga, jika Anda perlu memasukkan karakter khusus (seperti melarikan diri, dalam kasus saya) gunakan CTRL-V <ESC>dalam mode insert untuk memasukkan karakter yang benar. Literal <ESC>tidak berfungsi
adam_0
5
"Namun perhatikan, bahwa metode di atas menggunakan: let tidak akan berfungsi seperti yang diharapkan untuk makro apa pun yang Anda buat diakhiri dengan karakter <CR> atau <NL> (carriage return atau newline)." vim.wikia.com/wiki/Macros#Saving_a_macro
Paolo
2
Apakah kutipan (sekitar konten makro) diperlukan?
user2472071
15
Ctrl+r Ctrl+r registerNameinput mendaftarkan konten tanpa menafsirkannya - lebih baik dari "qp. Namun +1 untuk metode in-vim.
LAFK mengatakan Reinstate Monica
@ adam_0 Bisakah Anda menguraikan ini? Mungkin, sertakan contohnya? Saya tidak tahu bagaimana cara menanamkan karakter khusus, yaitu esc. Saya sudah mencoba setiap kombinasi memasukkan melarikan diri tetapi tidak berhasil. "Kode kunci" berakhir dengan merusak makro dan seluruh urutan dicetak.
GH05T
21

Untuk solusi yang lebih kuat, Anda dapat checkout Marvim .

Ini memungkinkan Anda menyimpan makro di namespace tertentu (atau menggunakan tipe file sebagai namespace default) dan Anda nantinya dapat mencari makro yang disimpan dan memuatnya dalam register yang siap digunakan.

Jika Anda menggunakan kembali banyak makro, ini cukup membantu.

acak
sumber
6
Hanya ingin yang kedua ini dan katakan betapa mudahnya mengatur marvim-salin satu file ke direktori / plugin Anda, kemudian gunakan F3 untuk menyimpan makro dan F2 untuk dijalankan.
Raine Revere
18

Tulis makro Anda di dalam ~ / .vimrc Anda, untuk mendefinisikan makro yang diluncurkan oleh CTRL + O dengan contoh, tambahkan baris berikut ke ~ / .vimrc Anda:

map <C-O> MACROTEXT

saat Anda merekam makro dengan mengetik qaAnda dapat mengambil teks makro Anda dengan mengetik"ap

Raoul Supercopter
sumber
Menggunakan "ap atau yang setara tidak bekerja, tetapi Anda bisa mendapatkan info yang sama dengan: reg
DShook
"ap akan merujuk ke makro yang tercatat pada aregister
Tyler Fowle
11

Perintah :mkexrc(atau :mkvimrc) dapat digunakan untuk menyimpan semua pengaturan saat ini :mapdan :setke file. Lihat :help mkexrcdetailnya.

Matthew Slattery
sumber
4

Anda dapat melakukan ini di blog Anda ~/.vimrc

:let @a="iHello World!\<CR>bye\<Esc>"

CATATAN: Anda harus menggunakan tanda kutip ganda untuk dapat menggunakan kunci khusus seperti dalam \<this silly example>.

SergioAraujo
sumber