달력

3

« 2024/3 »

  • 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

'삽질예방/vim'에 해당되는 글 3

  1. 2008.03.12 VIM + ctags, C++용 자동완성
  2. 2008.02.25 식별자별로 치환
  3. 2008.01.24 vim 7.0
2008. 3. 12. 23:16

VIM + ctags, C++용 자동완성 삽질예방/vim2008. 3. 12. 23:16

http://hangang.tistory.com/tag/ctags

OmniCppComplete을 위한 태그 설정.(우리가 원하는 클래스별 자동완성을 가능하게해준다.)
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q

,t도 유용(왼쪽에 리스트 만들어준다.)
,m도 유용(ma등으로 마킹했을때, 마킹한 부분이 화면에 표시.)

우왕ㅋ굳ㅋ
:
Posted by Kwang-sung Jun
2008. 2. 25. 18:55

식별자별로 치환 삽질예방/vim2008. 2. 25. 18: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
2008. 1. 24. 15:07

vim 7.0 삽질예방/vim2008. 1. 24. 15:07

http://pelican7.egloos.com/1419616

http://happyoutlet.net/entry/vim-%EC%B4%88-%EA%B0%84%EB%8B%A8-%EB%A7%A4%EB%89%B4%EC%96%BC


#
*

: 현재 커서 밑에 있는 단어를 서치한다.

ctrl + O
tab

: 커서 위치 이동, 앞으로 가기, 뒤로가기.. (가끔씩 원하지 않게도 엉뚱한곳으로 점프되었을때 사용한다.)


] + i
] + I

-> 현재 파일 내에서 함수가 어디서 정의되었으며 어디서 호출되었는지를 보여준다.
:
Posted by Kwang-sung Jun