Jawaban:
Tim Paus abolish.vim
dapat 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_BAR
dan penggunaan
crc
untuk mengkonversi fooBar
crm
untuk mengkonversi FooBar
cr_
atau crs
untuk dikonversi kefoo_bar
cru
untuk mengkonversi FOO_BAR
cr-
untuk mengkonversi foo-bar
Ya 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 /nameToReplace
dan 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 @@
.