Risposte:
Di Tim Pope abolish.vim
in 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_BAR
e l'uso
crc
per convertire in fooBar
crm
per convertire in FooBar
cr_
o crs
per convertire infoo_bar
cru
per convertire in FOO_BAR
cr-
per convertire in foo-bar
Sì, 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 /nameToReplace
e 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 @@
.