BLOG main image
분류 전체보기 (117)
Hidden (1)
five senses (0)
safe system (77)
code (35)
database (1)
Link (0)
Visitors up to today!
Today hit, Yesterday hit
daisy rss
tistory 티스토리 가입하기!
'고치기'에 해당되는 글 1건
2008. 4. 15. 07:00

 vim 으로 파일 한꺼번에 고치기

vi 에는 파일을 오픈한 뒤 특정한 명령을 실행 할 수있는 -c 옵션이 있다.

예를 들어 vi -c 15  foo.c   이렇게 하면 foo.c 를 오픈한 뒤 ':15' 명령을 실행해 15번째 줄로 이동을 한다.

vim 에서는  이 기능을 확장하여 -c 옵션을 여러개 사용할 수 있다.

예를 들어 vim -c '11' -c 'd' foo.c 하면 foo.c 를 열고, 11번째 줄로 이동(-c '11')을 한 다음 현재 라인 지움(-c 'd') 동작을 한다.

여기에 -c 'wq' 를 추가하면 수정후 저장/종료까지 한꺼번에 되므로 command line 명령 처럼 사용할 수 있게 되고, shell script 를 이용해 여러 파일에 적용하면 된다.

예를 들어 현재 디렉토리의 모든 c 소스 에서 'foo' 라는 문자열을 'bar' 로 바꾸고 싶다면


#!/bin/csh -f
foreach fn (*.c)
  vim -c '%s/foo/bar/g' -c 'wq' $fn
end

처럼 script를 만들면 된다.

물론 단순 패턴 치환이라면

#!/bin/csh -f
foreach fn (*.c)
  sed $fn 's/foo/bar/g' > tmpfile
  mv tmpfile $fn
end

와같이 해도 되지만  vim이 할 수 있는 일은 단순 패턴 치환 이상이기 때문에 훨씬 더 다양한 용도로 사용할 수 있다.
 

아래는 현재 디렉토리와 바로 아래 서브디렉토리의 모든 *.txt 파일을 dos 형식(cr-lf 가 붙는)으로 바꾸는 script 이다.

#!/bin/csh -f

foreach fn ( *.txt */*.txt )
  vim -c 'set fileformat=dos'  -c 'wq'  $fn
end
 

현재 디렉토리의 모든 *.c *.h 파일로 부터 syntax highlighting 된 html 파일을 만들어 보자.

#!/bin/csh -f
foreach fn ( *.[ch] )
  vim -c 'call Convert2HTML(0,0)' -c wq -c q $fn
end

prev"" #1 next