개요
우리의 목표는 아래 코드에서 모든 #define 한 녀석들을 Upper Case Snake Case 로 변환해보는 작업을 할 것입니다. 일일히 손으로 타이핑하여 수정하기에는 너무 오랜 시간이 걸리지요? 그래서 정규표현식을 이용하여 깔쌈하게 바꿔 볼 예정입니다. 바로 아래 나오는 소스코드를 바꿔볼 텐데요, 예를 들어 NoEventMask
라는 문자를 NO_EVENT_MASK
로 바꿔볼 것입니다. case를 변환시키는 작업은 vscode 의 기능을 활용하기 때문에 정규표현식의 치환 기능을 사용하지는 않습니다.
# define NoEventMask (0L)
# define KeyPressMask (1L<<0)
# define KeyReleaseMask (1L<<1)
# define ButtonPressMask (1L<<2)
# define ButtonReleaseMask (1L<<3)
# define EnterWindowMask (1L<<4)
# define LeaveWindowMask (1L<<5)
# define PointerMotionMask (1L<<6)
# define PointerMotionHintMask (1L<<7)
# define Button1MotionMask (1L<<8)
# define Button2MotionMask (1L<<9)
# define Button3MotionMask (1L<<10)
# define Button4MotionMask (1L<<11)
# define Button5MotionMask (1L<<12)
# define ButtonMotionMask (1L<<13)
# define KeymapStateMask (1L<<14)
# define ExposureMask (1L<<15)
# define VisibilityChangeMask (1L<<16)
# define StructureNotifyMask (1L<<17)
# define ResizeRedirectMask (1L<<18)
# define SubstructureNotifyMask (1L<<19)
# define SubstructureRedirectMask (1L<<20)
# define FocusChangeMask (1L<<21)
# define PropertyChangeMask (1L<<22)
# define ColormapChangeMask (1L<<23)
# define OwnerGrabButtonMask (1L<<24)
위 텍스트들을 아래로 바꿔보겠습니다.
# define NO_EVENT_MASK (0L)
# define KEY_PRESS_MASK (1L<<0)
# define KEY_RELEASE_MASK (1L<<1)
# define BUTTON_PRESS_MASK (1L<<2)
# define BUTTON_RELEASE_MASK (1L<<3)
# define ENTER_WINDOW_MASK (1L<<4)
# define LEAVE_WINDOW_MASK (1L<<5)
# define POINTER_MOTION_MASK (1L<<6)
# define POINTER_MOTION_HINT_MASK (1L<<7)
# define BUTTON1_MOTION_MASK (1L<<8)
# define BUTTON2_MOTION_MASK (1L<<9)
# define BUTTON3_MOTION_MASK (1L<<10)
# define BUTTON4_MOTION_MASK (1L<<11)
# define BUTTON5_MOTION_MASK (1L<<12)
# define BUTTON_MOTION_MASK (1L<<13)
# define KEYMAP_STATE_MASK (1L<<14)
# define EXPOSURE_MASK (1L<<15)
# define VISIBILITY_CHANGE_MASK (1L<<16)
# define STRUCTURE_NOTIFY_MASK (1L<<17)
# define RESIZE_REDIRECT_MASK (1L<<18)
# define SUBSTRUCTURE_NOTIFY_MASK (1L<<19)
# define SUBSTRUCTURE_REDIRECT_MASK (1L<<20)
# define FOCUS_CHANGE_MASK (1L<<21)
# define PROPERTY_CHANGE_MASK (1L<<22)
# define COLORMAP_CHANGE_MASK (1L<<23)
# define OWNER_GRAB_BUTTON_MASK (1L<<24)
케이스 종류
Case Type | Example |
---|---|
Original Variable as String | some awesome var |
Camel Case | someAwesomeVar |
Snake Case | some_awesome_var |
Kebab Case | some-awesome-var |
Pascal Case | SomeAwesomeVar |
Upper Case Snake Case | SOME_AWESOME_VAR |
실제로 해보기
정규표현식의 lookbehind 기능을 사용하므로, 이게 뭔지 모르겠다면, 다음 글을 참조해주세요. 이 기능을 활용하여 1차적으로 문자열을 검사할 것입니다. 키보드 단축키는 리눅스 Visual Studio Code 기준이므로 알맞는 단축키를 사용하시기 바랍니다. 우선 Ctrl + F
로 조그만 검색 창을 활성화시킵니다. 그 다음 Alt + C 로 Case Sensitive 하게 만들어주고, Alt + R 로 정규식 기능을 켜 줍니다. 단축키를 모르겠다면 마우스로 클릭하여 설정해도 됩니다. 그렇게 되면 아래 이미지처럼 나옵니다.
- 자 이제 여기서
# define
뒤에 있는 영단어를 선택해봅시다.(?<=# define )\w+
- 이제 Command Palette (
Ctrl + Shift + P
)를 열어서Select All Occurrences of Find Match (Ctrl + Shift + L)
를 실행합니다. - 그럼 이제 검색된 문자열들이 모두 선택되었을 것입니다.
- 이제 다시 Command Palette 를 열어서 Transform to Snake Case 를 먼저 실행하고,
- 그 다음 Transform to Upper Case 를 실행합니다. 그럼 짜잔~ 완성되었씁니다.
정말 간단하쥬?