Risposte:
Di Tim Pope abolish.vimin grado di convertire tra camelCase, MixedCase, snake_case, e UPPER_CASE, così come convertito (a senso unico) a dash-case.
Posizionare il cursore su uno qualsiasi dei fooBar, FooBar, foo_bar, o FOO_BARe l'uso
crc per convertire in fooBarcrm per convertire in FooBarcr_o crsper convertire infoo_barcru per convertire in FOO_BARcr- per convertire in foo-barSì, c'è , e come bonus ce n'è uno per andare anche nella direzione opposta!
Citazione dalla wiki nel caso in cui scompaia:
" Change selected text from NameLikeThis to name_like_this.
vnoremap ,u :s/\<\@!\([A-Z]\)/\_\l\1/g<CR>gul
e per la direzione opposta:
" 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 fornisce anche comandi per la conversione tra stili di denominazione:
:NameConvert snake
convertirà la parola sotto il cursore in snake_case.
:%ConvertNames/\<m_\k\+(/getter/gc
convertirà ogni occorrenza del modello in un nome getter, supponendo che l'utente confermi la trasformazione ( :h :s_flags)
Gli stili supportati sono di due tipi:
Ho creato un comando come questo:
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"
Devi prima cercare una stringa che vuoi sostituire /nameToReplacee poi corri :Ctl, e la prossima corrispondenza di ricerca diventerà name_to_replace. Il comando si inserisce nel @@registro in modo da poter ripetere l'azione premendo @@.