ref/Unix / Linux
vi 사용법 - ctags / bash 에서 vi 모드 사용
민성아빠
2003. 12. 3. 14:25
tag stack
tag란 한 마디로 설명하자면 tags 파일에 존재하는 직접 이동을 위한 표시입 니다. (내용을 보면 이것도 매크로입니다.--) 프로그램을 작성하다보면 함수의 내용 을 알고 싶은 경우가 생기죠. 이런 때 그 함수로 직접 이동을 했다가 다시 편집하던 곳으로 이동을 할 수 있도록 해 줍니다. 다음과 같은 프로그램이 있다고 합시다. main.c
void main(){
hello()
bye()
}
my.h
void hello(){
puts(Hello, vi user)
}
void bye(){
puts(Good bye)
}
자 이제 ctags로 tags 파일을 만듭니다. 다음과 같이 하면 되겠지요. :!ctags *.[ch] 혹은 다른 셀상에서 [nu11@foo vi-test]$ ctags *.[ch] 이제 tag stack의 기능을 활용해 봅시다. vi main.c로 main.c를 열어봅시다. hello() 앞으로 이동을 합니다. 어떻게 갈지는 알아서들 하시길... 이 위치에서 [ctrl]] 키를 누릅니다. (^]입니다. 컨트롤키를 누른 상태에서 ]) 화면이 바뀌면서 void hello(){ 의 맨 앞에 hello가 위치하게 되죠. 함수의 내용을 확인하였으면 다시 [ctrl]t를 누 릅니다. 다시 원래 위치로 복귀를 합니다. 다시 bye()가 있는 줄에서 [ctrl]]를 누르 면 다시 my.h가 열리면서 void bye()줄에 커서가 위치합니다. 다시 복귀는 [ctrl]t. vim의 HELP에도 tags화일이 존재합니다. :help로 help 문서를 보다보면 ||로 둘러싸인 것들이 있는데 이 위에서 ^]를 누르면 HYPER TEXT처럼 그 파일로 이동을 합 니다. 다시 ^t를 누르면 복귀구요.
--------------------------------------------------------------------------------
4.5. 프로그래밍을 위한 명령들
vim에는 tag stack이외에도 프로그래밍에 편리한 기능을 제공합니다. 바로 컴파일 후에 에러가 난 곳으로 바로 이동을 할 수 있도록 해 주는 기능입니다. 우선 컴파일시에 만들어진 error 파일을 저장해야 합니다. 만약에 Makefile이 만들어져 있 다면 :make 명령 한 번만 내리면 자동으로 errorfile이 만들어지고 에러가 발생한 행 으로 이동을 합니다. :cl을 입력하면 에러 리스트가 나오고 :cn을 입력하면 에러가 난 다음 행으로 자동으로 이동을 합니다. :cN 은 반대 방향으로 에러가 난 행으로 이 동을 합니다. 여러 파일로 이루어진 소스의 경우에도 다 열어가면서 들어갑니다. main.c
void added(){
This makes error
}
void main(){
hello()
bye()
added()
}
my.h
void hello(){
this also makes error
puts(Hello, vi user)
}
void bye(){
puts(Good bye)
}
Makefile
all : main.c my.h
gcc -o test main.c my.h
clean : test
rm -f test
bash에서 vi모드로 사용하기- bash를 사용하고 계시다면 command line 편집기가 vi의 숙적인 emacs모드로 세팅되어 있습니다. 명령을 하나 치고 [ctrl]-a를 누르면 커서가 명령의 맨 처음으로 이동을 하지요? 그럼 emacs모드 맞습니다. set -o vi 로 당장 vi 모드로 바꿔주시기 바랍니다. ^^ 자 이제 command line상에서 키 이동은 지금까지 배워왔던 키 입력과 같습니다.
tag란 한 마디로 설명하자면 tags 파일에 존재하는 직접 이동을 위한 표시입 니다. (내용을 보면 이것도 매크로입니다.--) 프로그램을 작성하다보면 함수의 내용 을 알고 싶은 경우가 생기죠. 이런 때 그 함수로 직접 이동을 했다가 다시 편집하던 곳으로 이동을 할 수 있도록 해 줍니다. 다음과 같은 프로그램이 있다고 합시다. main.c
void main(){
hello()
bye()
}
my.h
void hello(){
puts(Hello, vi user)
}
void bye(){
puts(Good bye)
}
자 이제 ctags로 tags 파일을 만듭니다. 다음과 같이 하면 되겠지요. :!ctags *.[ch] 혹은 다른 셀상에서 [nu11@foo vi-test]$ ctags *.[ch] 이제 tag stack의 기능을 활용해 봅시다. vi main.c로 main.c를 열어봅시다. hello() 앞으로 이동을 합니다. 어떻게 갈지는 알아서들 하시길... 이 위치에서 [ctrl]] 키를 누릅니다. (^]입니다. 컨트롤키를 누른 상태에서 ]) 화면이 바뀌면서 void hello(){ 의 맨 앞에 hello가 위치하게 되죠. 함수의 내용을 확인하였으면 다시 [ctrl]t를 누 릅니다. 다시 원래 위치로 복귀를 합니다. 다시 bye()가 있는 줄에서 [ctrl]]를 누르 면 다시 my.h가 열리면서 void bye()줄에 커서가 위치합니다. 다시 복귀는 [ctrl]t. vim의 HELP에도 tags화일이 존재합니다. :help로 help 문서를 보다보면 ||로 둘러싸인 것들이 있는데 이 위에서 ^]를 누르면 HYPER TEXT처럼 그 파일로 이동을 합 니다. 다시 ^t를 누르면 복귀구요.
--------------------------------------------------------------------------------
4.5. 프로그래밍을 위한 명령들
vim에는 tag stack이외에도 프로그래밍에 편리한 기능을 제공합니다. 바로 컴파일 후에 에러가 난 곳으로 바로 이동을 할 수 있도록 해 주는 기능입니다. 우선 컴파일시에 만들어진 error 파일을 저장해야 합니다. 만약에 Makefile이 만들어져 있 다면 :make 명령 한 번만 내리면 자동으로 errorfile이 만들어지고 에러가 발생한 행 으로 이동을 합니다. :cl을 입력하면 에러 리스트가 나오고 :cn을 입력하면 에러가 난 다음 행으로 자동으로 이동을 합니다. :cN 은 반대 방향으로 에러가 난 행으로 이 동을 합니다. 여러 파일로 이루어진 소스의 경우에도 다 열어가면서 들어갑니다. main.c
void added(){
This makes error
}
void main(){
hello()
bye()
added()
}
my.h
void hello(){
this also makes error
puts(Hello, vi user)
}
void bye(){
puts(Good bye)
}
Makefile
all : main.c my.h
gcc -o test main.c my.h
clean : test
rm -f test
bash에서 vi모드로 사용하기- bash를 사용하고 계시다면 command line 편집기가 vi의 숙적인 emacs모드로 세팅되어 있습니다. 명령을 하나 치고 [ctrl]-a를 누르면 커서가 명령의 맨 처음으로 이동을 하지요? 그럼 emacs모드 맞습니다. set -o vi 로 당장 vi 모드로 바꿔주시기 바랍니다. ^^ 자 이제 command line상에서 키 이동은 지금까지 배워왔던 키 입력과 같습니다.