Jawaban:
Tim Paus abolish.vimdapat mengkonversi antara camelCase, MixedCase, snake_case, dan UPPER_CASE, serta mengkonversi (satu arah) ke dash-case.
Posisi kursor pada salah fooBar, FooBar, foo_bar, atau FOO_BARdan penggunaan
crc untuk mengkonversi fooBarcrm untuk mengkonversi FooBarcr_atau crsuntuk dikonversi kefoo_barcru untuk mengkonversi FOO_BARcr- untuk mengkonversi foo-barYa ada , dan sebagai bonus ada satu di sana untuk pergi ke arah yang berlawanan juga!
Kutipan dari wiki jika hilang:
" Change selected text from NameLikeThis to name_like_this.
vnoremap ,u :s/\<\@!\([A-Z]\)/\_\l\1/g<CR>gul
dan untuk arah yang berlawanan:
" Change selected text from name_like_this to NameLikeThis.
vnoremap ,c :s/_\([a-z]\)/\u\1/g<CR>gUl
vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
lh-dev juga menyediakan perintah untuk mengkonversi antara gaya penamaan:
:NameConvert snake
akan mengonversi kata di bawah kursor ke snake_case.
:%ConvertNames/\<m_\k\+(/getter/gc
akan mengonversi setiap kemunculan pola menjadi nama pengambil, dengan asumsi pengguna mengonfirmasi transformasi ( :h :s_flags)
Gaya yang didukung terdiri dari dua jenis:
Saya membuat perintah seperti ini:
command! Ctl
\ exec "norm \"xygn" |
\ let @y = substitute(@x, "\\([^A-Z]\\)\\([A-Z]\\)", "\\1_\\2", "g") |
\ let @y = tolower(@y) |
\ exec "norm cgn\<C-r>y" |
\ let @@ = ":Ctl\n"
Pertama-tama Anda harus mencari string yang ingin Anda ganti /nameToReplacedan kemudian Anda jalankan :Ctl, dan kecocokan pencarian berikutnya akan menjadi name_to_replace. Perintah menempatkan dirinya ke dalam @@register sehingga Anda dapat mengulangi tindakan dengan menekan @@.