Ctags + T(ag)list

 졸업논문 세미나를 하면서 제가 맡았던 부분인 ctags + taglist 플러그인에 대한 발표자료를 거의 그대로 옮긴 것입니다. 형식을 보시면 아시겠지만 ppt를 그대로 옮겼어요. 말로 때웠던 부분들도 글로 써두고 싶지만 귀찮아진 관계로 나중에… -_-;;;;

Ctags 소개

    여러 Source 파일들의 index(tag)를 생성하는 프로그램
    함수, 변수, 클래스 멤버, 매크로 등을 indexing함.
    생성된 tag는 여러 Text editor에서 사용가능
    현재는 exuberant-ctags라는 별도 프로젝트로 분리되었음.
    공식 홈페이지 : http://ctags.sourceforge.net

Ctags 구하기

    Source 또는 패키지 다운로드
        http://ctags.sourceforge.net
            Source 압축파일
            Source RPM
            Fedora 7 binary RPM
            윈도우즈 용 Source와 Binary

Ctags를 쓰기 위한 준비

    소스 파일이 있는 디렉토리의 최상단에서 tag 생성 -> “tags” 파일이 생성됨.

ctags -R *

    VI 설정파일(.vimrc)에 tag를 찾기 위해 다음을 추가

set tags+=./tags,../tags,../../tags,../../../tags,tags

VI + Ctags 사용 – :ts

    :ts <symbol> – <symbol>이 있는 위치를 선택하여 이동, Symbol 위에서 “g + ]” 해도 동일한 효과

:ts ctx

사용자 삽입 이미지   

VI + Ctags 사용 – :ta, ctrl-t, :tags

    :ta <symbol> – <symbol>을 찾아 이동, 소스파일의 찾을 symbol 위에서 ctrl-] 해도 됨
    :tags – 현재 tag 스택을 보여줌.

사용자 삽입 이미지

    Ctrl-t – tag 스택의 상위로(이전 위치로) 이동

taglist 소개 및 기능

    vim의 소스 코드 브라우저 플러그인
    Vim 창 안에서 함수, 클래스, 구조체, 열거형(enumeration),  매크로 정의 등을 보여줌
    Tag 창에서 tag를 선택하면, 해당 tag의 정의로 커서가 이동
    Ctags가 생성하는 tag 파일에 의존적
    공식 홈페이지 : http://vim-taglist.sourceforge.net/

Taglist 다운로드

    Sourceforge
        http://sourceforge.net/projects/vim-taglist/download

    VIM 공식 홈페이지의 스크립트
        http://vim.sourceforge.net/scripts/script.php?script_id=273

Taglist를 쓰기 위한 준비

    .vimrc 파일에 필수적으로 추가할 내용

filetype on

    .vimrc 파일에 선택적으로 추가할 내용

let Tlist_Ctags_Cmd=”/usr/bin/ctags“
let Tlist_Inc_Winwidth=0
let Tlist_Exit_OnlyWindow = 1
let Tlist_Auto_Open=1

    더 많은 정보는 매뉴얼(http://vim-taglist.sourceforge.net/manual.html) 참고

Taglist 화면(:TlistToggle)

사용자 삽입 이미지

Taglist 단축키

    <CR> – tag의 정의로 이동
    <SPACE> – tag 의 prototype을 표시
    u – tag 목록을 갱신
    x – tag list 창을 확대/축소
    + – 플딩 열기 (* – 모든 폴딩 열기)
    – – 폴딩 접기 (= – 모든 폴딩 접기)
    [[ 또는 <BACKSPACE> – 이전 파일의 시작위치로
    ]] 또는 <TAB> – 다음 파일의 시작위치로
    q – taglist 창 닫기
    <F1> – 도움말

MS에서 웹하드 5G를 무료로 쓰래요.

저는 쓸데없는 이메일 구독이 꽤 많은 편입니다. ㅋㅋ

전자신문도 구독 중인데 몇 개월을 읽지 않다가 오늘자 뉴스레터를 읽어봤더니 아래와 같은 기사가 있네요.

한국 MS “무료 웹하드 쓰세요”

MS의 스카이드라이브(http://skydrive.live.com/)에서 5기가 웹하드를 무료로 38개국에서 제공한다는 기사인데 사용자로서는 꽤 반가운 기사입니다. ㅎㅎ

뭐 지금까지 써온 방법- E-Mail 등을 이용해서 개인 자료를 보관하던) -도 나쁘지 않지만 전용 서비스를 이용하는 것도 좋은 방법이겠죠.

관심있으신 분들은 한 번 둘러보시는 것도 괜찮겠습니다. 흐흐

제목보고 낚인 글.. 고흐 VS 고갱 – 둘도 없는 친구이자 경쟁자

네이버에 들어갔다가 제목을 보고 낚인 글.

미술에 대해 잘 알지 못하는 나이지만, 고흐와 고갱이 둘도 없는 친구이자 경쟁자란 생각은 절대 들지 않는다.

오히려 고흐는 고갱에게 무시당하는 존재 같은 느낌이다.

글쓴이 역시 그런 것들을 알고 쓴 듯한데.. 왜 저런 낚시성 제목을 붙인 것인지..

제대로 낚인 기분에 왠지 씁쓸하고 기분이 나쁘다.

게다가 가장 아래에는 저런 제목으로 유명해진 것에 대해 감격하기까지.. -_-;;;

그림에 대해서 잘은 몰라도.. 고흐는 좋아하기에..

그냥그냥..

작년에 신입회원으로 참여했던 멤버십 OT! 이번엔 자치회로 갑니다^^

작년엔 삼성 S/W 멤버십 신입회원으로 OT를 참가했었는데..

올해는 자치회장이란 이름을 달고 멤버십 OT에 참가합니다. ㅎㅎ

참~ 시간 빠르네요! 신입회원들이 열심히 OT 준비 중인데 지켜보는 것도 재미있고~

걱정인 것은 가서 5~10분 정도 발표를 하라는데~ 뭘 해야 하나~ 걱정입니다.

전국 멤버십 신입회원들이 다 모이기 때문에 꽤나 많은 인원일 텐데 떨지나 않을는지.. 흐흐

암튼! 28~30일까지! 재밌을 것 같습니다!

DAEMON Tools Lite 4.11 한글 패치

pk5.dll
직접 만든 DAEMON Tools Lite 4.11 한국어 패치입니다.

이전 버전 중 어느 버전부터 옵션에 “Language”가 지원되었는지 알 수가 없어서 어느 버전에서부터 되는지는 알 수 없습니다.

설치법은 일반적으로 C:\Program Files\DAEMON Tools Lite\Lang 폴더에 해당 파일을 복사해 넣으시고 DAEMON Tools를 종료했다가 실행시키면 다음과 같이 “Option”/”Language” 에 “한국어” 가 나타납니다. 그럼 클릭해 주시면 되겠죠~
사용자 삽입 이미지
그럼 다음과 같이 메뉴들이 한글로 나타나는 것을 보실 수 있습니다^^
사용자 삽입 이미지
Pro 버전 것까지 번역해 놓으려다가 귀찮아서 해놓진 않았습니다. Lite 상에서 나타나는 것들은 다 한글로 나오길래 말이죠. ㅎㅎ

[#M_만든 과정은 여기를..|접기..| 처음에는 ResHack으로 ENU.DLL의 String Table의 스트링들을 바꿔치기 할 셈이었습니다. 근데 안쪽의 언어 설정을 수동으로 다 바꾸고 스트링들을 바꾸기엔 너무 귀찮더라구요;

그래서 Visual Studio 6로 ENU.DLL을 열어서 저장하려는 순간! 죽더군요-_-

Visual Studio 2005에서는 저장이 되는데.. DAEMON Tools 포럼에 가보니.. 공식 툴을 제공하더군요-_-..
사용자 삽입 이미지그렇게 만들었답니다. 포럼에 가보니 한국어 공식 번역자가 있던데.. 활동하고 계시진 않은가 봅니다._M#]

램디스크로 불여우의 캐시를 설정하는 방법!

쓰던 노트북에서 램디스크로 50메가쯤 잡아서 이걸 불여우 캐시로 썼었다.

다시 설정하려니 어떻게 하는지 생각이 나야 말이지-_-;;

구글이 찾아준 설정하는 방법에 트랙백 걸기!

찾아준 방법은 여기!

VI 실전에서 사용했던 테크닉 정리 by SWSSM 17기 구도훈

예전 수원 멤버십에서 신입회원 세미나 당시에 도훈이가 했던 내용인데 유용하게 정리된것 같아 blog에 따로 정리해 둡니다. 허락은 받지 않았습니다. 😛

SWSSM 17기 구도훈 2007.11.2 실전에 사용했던 테크닉 정리

1. 시작

이번 세미나에서는 vi를 다루려고 합니다. 기초적인 부분은 생략하기로 하고 코딩 시 유용한 것에 대해서 언급하려 합니다.
실제로 vi를 돌려서 어떻게 사용하는지 알아 볼 텐데 , 쓸만한 것은 체크를 해서 자기 것으로 만들었으면 좋겠습니다.

2. 화면 분할/이동, 버퍼이동

vi 고수처럼 보이게 만드는 화면 분할입니다.
모니터를 한 개 혹은 두 개 이상 쓰더라도, 가끔씩은 화면을 분할 할 필요가 있는 것 같습니다.
여기서는 윈도우를 어떻게 분할하는지 설명합니다.

윈도우 수직분할(vs)
윈도우 수평분할(sp)

윈도우 간 이동 CTRL-w + ( i, j, k,l)
윈도우 끄기 CTRL- q

윈도우 height 조정 CTRL – w – (+,-)
윈도우 width 조정 CTRL – w – (<,>)
윈도우 사이즈 같게 CTRL – w – =

다른 윈도우 화면에 놔두면서, 현 윈도우 최대한 크게 CTRL – w – |

버퍼 보기(ls)

해당 버퍼로 이동 예):1b
따라 해보기) 40vs .

3. mark 사용하기

현재 파일의 커서 위치에 마크를 해놓고 언제든지 다시 돌아올 수 있다.

마크된 리스트 보기 :marks
마크하는 방법 m{a-zA-Z}
해당 마크로 이동 ‘{a-zA-Z}

단 a-z 와 A-Z에는 차이가 있다.
‘a – ‘z 소문자는 현재파일안에서, ‘A – ‘Z 대문자는 파일들간에
A-Z 에 프로젝트에서 자주 사용하는 소스 파일을 맵핑 해놓고 바로 찾아갈 수 있다.

vi에서 특정 파일에 저장하는지 A-Z 마크내용은 vi를 재실행해도 볼수 있다.
아래의 내용을 .vimrc에 추가하면 현재 에디팅 되는 파일위치로 path가 자동 이동된다.
if(has(“autocmd”)

” Change to the directory the file in your current buffer is in
autocmd BufEnter * :cd %:p:h

endif ” has(“autocmd”)

4. 레코딩

vi를 사용하다 보면 단순 반복 작업을 할 때가 있습니다. 이때 레코딩 명령을 이요하면 유용합니다.
레코딩 시작과 끝은 q로 시작합니다

1. 레지스터에 레코딩 하는 법
명령 모드 상태에서 q 로 시작
q누르고 레지스터에 저장 가능(vi 레지스터에는 0-9a-zA-Z)
명령 모드 상태에서 q 로 끝

2. 레지스터에 저장된것 불러오는 방법
@누르고 저장된 레지스터입력
@@ 방금전 불러온 레지스터에서 불러오기

5. ctags와 같이 vi 활용하기

ctags에 여래개의 .c .h의 함수/변수/정의/선언 내용을 기록해놓고 vi에서 활용함.

따라해보세요 )
1. tags 파일 생성(c와 h파일에 해당)
ctags -R *.[ch]
2. vi가 tag파일 읽어올수 있도록 ~/.vimrc에 세팅
set tags=./tags,tags
set tags+=/usr/src/linux/tags
set tags+=../tags
set tags+=../../tags
set tags+=../../../tags
3. 사용하기
tags 파일 참조하여 함수/변수/정의/선언 위치로 이동 g], ctrl+]
돌아오기 ctrl + t
태그 스택 보기 – tag
4. 기타
cscope도 vi와 연동해서 사용합니다만 ctags랑 약간 차이가 있으니 한번 돌려보세요.

6. make 사용하기

컴파일 – :make
컴파일 결과보기:cw
!! 결과 창에서 에러 라인 선택하면 해당소스의 해당 라인으로 이동함.

90. 나머지 유용한것들

folding zf, zo
다음 괄호({},(),[])찾기 %
함수 프로토 타입 혹은 define내용을 한 줄로 보기 [i
현 파일 내에서 함수/변수/정의/선언 위치로 이동 gd,gD
현재 커서 밑에 있는 파일 에디트 – gf
이전 버퍼로 이동 ctrl-6
자동완성 ctrl + p
glibc 레퍼런스 – 함수위에서 2K(system call), 3K(standard library)
현재 라인에서 글자찾기 f(F) – 예를 들어 3을 찾는 다면 3f
대소문자 전환 u,U
정렬하기 -선택하고 sor(sor!)
현재커서위치에 있는 값 증가시키기 CTRL – A
아스키 코드 보는 방법 – ga
쉘 명령 사용 – 예제 !pwd
잠깐 쉘로 빠져 나오기 ctrl – z, 복귀는 fg
복사 붙이기 할때 사용해보세요. set paste
검색 시 대소문자 구분 무시 – set ignorecase

정말 모를 때는 help

99. 끝

추가 팁

마우스 스크롤이나 선택 복사를 하고 싶다면
:set mouse=a
특정 줄부터 줄까지 단어를 바꾸고 싶다면
:#,#s:/old/new/g
커서가 위치한 곳의 단어 찾기
Shift + 8
터미널에서 줄이 길어서 안보이면
:set wrap
Tab대신 space 사용
:set expandtab
Tab문자 간격
:set ts=8
Shif width
:set sw=8
한번에 다중 윈도우에 각각의 파일 열면서 시작하기
sp로? vim -o a b c
또는 vs로? vim -O a b c

makefile 견본

makefile 견본

.SUFFIXES : .c .o

CC = gcc

INC =
LIBS =
CFLAGS = -g $(INC)

OBJS = tbl.o
SRCS = tbl.c

TARGET = table

all : $(TARGET)

$(TARGET) : $(OBJS)
    $(CC) -o $@ $(OBJS) $(LIBS)

dep :
    gccmakedep $(INC) $(SRCS)

clean :
    rm -rf $(OBJS) $(TARGET) core

new :
    $(MAKE) clean
    $(MAKE)

자주 쓰는데도 항상 까먹는  makefile!-_-/

PROGNAME = calctest
SRCS = $(wildcard *.c)
OBJS = $(patsubst %.c, %.o, $(SRCS))

CC = gcc
CFLAGS = -Wall
LDFLAGS =

$(PROGNAME): $(OBJS)
    $(CC) $(LDFLAGS) -o $PROGNAME $^

clean:
    rm -f $(PROGNAME) $(OBJS) depend

depend: $(SRCS)
    $(CC) $(CFLAGS) -MM $^ > $@

-include depend

참고 : http://www.viper.pe.kr/docs/make-ko/make-ko_8.html

스킨 변경 ㅎㅎ

정말 오랜만의 포스팅!

그냥 기분 전환 겸 블로그 스킨 변경!

깔끔하긴 하지만 관리자 메뉴에서 스킨 변경을 할 수가 없다는 점.

그리고, 미리보기 기능이 동작하지 않는 점 이 약간 아쉬운 스킨!

스킨 이름은 fading-line 입니다.^^

제목에 영문이 대문자로만 나오는 것을 고치고, 그 밑에 메뉴(?)에 글 바로 쓰는 것(entry)만 추가해서

살짝 바꿔서 사용중입니다. ㅎㅎ

깔끔하니 좋네요!