Відповіді:
Тім Папа 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
Так, є , і як бонус є один, щоб перейти і в зворотному напрямку!
Цитата з вікі на випадок, якщо вона піде:
" 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
буде перетворювати кожне виникнення шаблону в ім'я getter, припускаючи, що користувач підтвердить перетворення ( :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
. Команда ставить себе в @@
регістр, щоб ви могли повторити дію, натиснувши @@
.