Odpowiedzi:
Tim papieża abolish.vim
moż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_BAR
i użytkowania
crc
przekonwertować na fooBar
crm
przekonwertować na FooBar
cr_
lub crs
przekonwertować nafoo_bar
cru
przekonwertować na FOO_BAR
cr-
przekonwertować na foo-bar
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
vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
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:
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ć, /nameToReplace
a 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 @@
.