달력

12

« 2017/12 »

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  
  •  

'식별자'에 해당되는 글 1

  1. 2008.02.25 식별자별로 치환
2008.02.25 03:55

식별자별로 치환 삽질예방/vim2008.02.25 03:55

#와 *를 써보셨나요.
커서를 식별자 위에 두고 #이나 *을 눌러보세요. 번갈아서도 눌러보세요. 같은 식별자를 찾아줍니다.(그냥 텍스트 매치가 아니라, C에서 식별자로 인정되는 단어만 찾아줍니다.)

그래서 리팩토링을 위해 변수명을 바꾸는 예제입니다.

gamza를 kamja로 바꾸는 예제입니다.
%s/gamza/kamja/g

라고 할수 있는거지요
%는 현재 보고있는 파일 전체를 대상으로
s는 substitute 대체한다는 뜻이지요
마지막에 g는 한 줄에서 두번 이상 바꾸겠다는 뜻(모르면 그냥 무조건달아요)
/는 그냥 구분자라고 생각하세요.

하지만 저렇게 하면 문제점이, gamzabaw라는 변수까지도 kamjabaw로 바꾸어버립니다.

그렇다면 이렇게 하는게 좋습니다.
%s/\<gamza\>/kamja/g

이렇게 한다면 gamzabaw를 kamjabaw로 바꾸는 붕우유신같은 일은 하지 않을 것입니다.
무조건 C에서 인정하는 '식별자' 단위로 정확히 gamza라는 변수나 함수이름만 바꾸어줍니다.

한가지 더 팁이 있다면
v또는 Shift+V를 통해서 영역을 설정한 다음에
   : (즉, shift + ;)
을 누른 후
s/\<gamja\>/kamja/g
라고 입력하면 영역 내에서만 치환을 합니다. 아까처럼 %를 쓸필요가 없습니다 제가 바로 위에 표시하진 않았지만 저상황에서 : 누르는 순간 범위연산자가 입력됩니다. 직접 뿌띠리리를 지금 켜서 확인해보세요.

치환은 예전부터 알았지만, 식별자별로 하는건 도저히 못찾겠더군요. 우연히알게되어 공유합니다.
신고
Posted by Kwang-sung Jun