CamelCase를 소문자 _with_underscores로 변환하는 vim 매크로


12

CamelCase를 lowercase_with_underscores로 또는 그 반대로 변환하는 vim 매크로가 있습니까?

답변:


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

완벽한 솔루션
Neil G

팀 포프는 굉장합니다. 많은 훌륭한 플러그인.
Hendrik

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

감사! 내 vim을 제외하고는 거의 완벽합니다 .CamelCase 이름의 첫 글자는 변경하지 않습니다. 왜 그런지 잘 모르겠습니다.
Neil G

아주 좋아요 뱀이 낙타 방향으로 방향을 바꾸어야한다는 것을 알았습니다.vnoremap tos :s/\C\(\U\&\S\)\([A-Z]\)/\1_\l\2/g<CR>
Jonah

1

lh-dev 는 이름 지정 스타일 사이를 변환하는 명령도 제공합니다.

:NameConvert snake

커서 아래 단어를 snake_case로 변환합니다.

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

사용자가 변환을 확인한다고 가정하면 패턴의 각 항목을 게터 이름으로 변환합니다 ( :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. 명령은 @@레지스터에 들어가므로을 눌러 작업을 반복 할 수 있습니다 @@.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.