macro vim per convertire CamelCase in minuscole_con_underscores


12

Esiste una macro vim per convertire CamelCase in lettere minuscole e con viceversa?

Risposte:


19

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 fooBar
  • crm per convertire in FooBar
  • cr_o
    crsper convertire infoo_bar
  • cru per convertire in FOO_BAR
  • cr- per convertire in foo-bar

soluzione perfetta
Neil G

Tim Pope è fantastico. Così tanti ottimi plugin.
Hendrik,

6

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

Grazie! È quasi perfetto, tranne che per me, non cambia la prima lettera del nome CamelCase. Non sono sicuro del perché.
Neil G,

Molto bella. Ho scoperto che dovevo apportare questa modifica affinché il serpente si dirigesse verso il cammello:vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
Giona

1

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:


1

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 @@.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.