vim макрос для перетворення CamelCase в нижній регістр_with_underscores


12

Чи є макрос vim для перетворення CamelCase на малі регістри_with_underscores і навпаки?

Відповіді:


19

Тім Папа 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

ідеальне рішення
Ніл G

Тім Поп - приголомшливий. Стільки чудових плагінів.
Гендрік

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

Дякую! Це майже ідеально, за винятком мого виду, він не змінює першої літери назви CamelCase. Я не впевнений, чому.
Ніл G

Дуже хороша. Я виявив, що мені потрібно змінити напрямок змії на верблюда:vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
Йона

1

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

:NameConvert snake

перетворить слово під курсором у snake_case.

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

буде перетворювати кожне виникнення шаблону в ім'я getter, припускаючи, що користувач підтвердить перетворення ( :h :s_flags)

Підтримувані стилі мають два види:


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. Команда ставить себе в @@регістр, щоб ви могли повторити дію, натиснувши @@.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.