makro vim do konwersji CamelCase na małe litery z licznikami

12

Czy istnieje makro vim do konwersji CamelCase na małe litery zundresorów i odwrotnie?

Neil G.
źródło

Odpowiedzi:

19

Tim papieża abolish.vimmoże konwertować między camelCase, MixedCase, snake_case, i UPPER_CASE, a także konwersji (w jedną stronę) do dash-case.

Ustaw kursor na dowolnym fooBar, FooBar, foo_bar, lub FOO_BARi użytkowania

  • crc przekonwertować na fooBar
  • crm przekonwertować na FooBar
  • cr_lub
    crsprzekonwertować nafoo_bar
  • cru przekonwertować na FOO_BAR
  • cr- przekonwertować na foo-bar
Chris Johnsen
źródło
idealne rozwiązanie
Neil G
Tim Pope jest niesamowity. Tyle świetnych wtyczek.
Hendrik
6

Tak, istnieje , a jako bonus jest też jeden, który idzie w przeciwnym kierunku!

Cytat z wiki na wypadek, gdyby zniknął:

" Change selected text from NameLikeThis to name_like_this.
vnoremap ,u :s/\<\@!\([A-Z]\)/\_\l\1/g<CR>gul

i w przeciwnym kierunku:

" Change selected text from name_like_this to NameLikeThis.
vnoremap ,c :s/_\([a-z]\)/\u\1/g<CR>gUl
Daniel DiPaolo
źródło
Dzięki! Jest prawie idealny, z wyjątkiem mojego vima, nie zmienia pierwszej litery nazwy CamelCase. Nie jestem pewien dlaczego.
Neil G
Bardzo dobrze. Odkryłem, że muszę wprowadzić tę zmianę, aby wąż zmienił kierunek na wielbłąda:vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
Jonah
1

lh-dev udostępnia także polecenia do konwersji stylów nazw:

:NameConvert snake

przekonwertuje słowo pod kursorem na snake_case.

:%ConvertNames/\<m_\k\+(/getter/gc

konwertuje każde wystąpienie wzorca na nazwę gettera, zakładając, że użytkownik potwierdzi transformację ( :h :s_flags)

Obsługiwane style są dwojakiego rodzaju:

Luc Hermitte
źródło
1

Utworzyłem takie polecenie:

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"

Najpierw musisz wyszukać ciąg, który chcesz zastąpić, /nameToReplacea następnie uruchomić :Ctl, a stanie się następne dopasowanie wyszukiwania name_to_replace. Polecenie wpisuje się do @@rejestru, aby można było powtórzyć czynność, naciskając @@.

Jake
źródło