10

Существует ли макрос vim для преобразования CamelCase в lowercase_with_underscores и наоборот?

4 ответа4

18

abolish.vim Тима Поупа может конвертировать среди camelCase , MixedCase , snake_case и UPPER_CASE , а также конвертировать (в одну сторону) в dash-case .

Поместите курсор на любой из fooBar FooBar foo_bar или FOO_BAR и использования

  • crc для конвертации в fooBar
  • crm для преобразования в FooBar
  • cr_ или
    crs для преобразования в foo_bar
  • cru чтобы преобразовать в FOO_BAR
  • cr- конвертировать в foo-bar
6

Да, есть, и в качестве бонуса есть еще один, который идет в противоположном направлении!

Цитата из вики на случай, если она уйдет:

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

и для противоположного направления:

" Change selected text from name_like_this to NameLikeThis.
vnoremap ,c :s/_\([a-z]\)/\u\1/g<CR>gUl
1

Я создал команду, как это:

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"

Сначала вы должны найти строку, которую хотите заменить /nameToReplace а затем выполните :Ctl , и следующее совпадение поиска станет name_to_replace . Команда помещается в регистр @@ поэтому вы можете повторить действие, нажав @@ .

1

lh-dev также предоставляет команды для преобразования между стилями именования:

:NameConvert snake

преобразует слово под курсором в snake_case.

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

будет преобразовывать каждое вхождение шаблона в имя получателя, предполагая, что пользователь подтверждает преобразование (:h :s_flags)

Поддерживаемые стили бывают двух видов:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .