Ответы:
Тим Папа abolish.vimможет конвертировать между camelCase, MixedCase, snake_caseи UPPER_CASE, а также конвертировать ( в одну сторону) в dash-case.
Поместите курсор на любой из fooBar, FooBar, foo_barили FOO_BARи использования
crc преобразовать в fooBarcrm преобразовать в FooBarcr_или crsпреобразовать вfoo_barcru преобразовать в FOO_BARcr- преобразовать в foo-barДа, есть , и в качестве бонуса есть и тот, кто идет в противоположном направлении!
Цитата из вики на случай, если она уйдет:
" 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
vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
lh-dev также предоставляет команды для преобразования между стилями именования:
:NameConvert snake
преобразует слово под курсором в snake_case.
:%ConvertNames/\<m_\k\+(/getter/gc
будет преобразовывать каждое вхождение шаблона в имя получателя, предполагая, что пользователь подтверждает преобразование ( :h :s_flags)
Поддерживаемые стили бывают двух видов:
Я создал команду, как это:
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. Команда помещает себя в @@регистр, поэтому вы можете повторить действие, нажав @@.