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.