일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- go
- UNIX
- 포인터변수
- 커널
- UNIX Internals
- newSQL
- 함수포인터
- Preprocessor
- kernel
- DBMS 개발
- bash
- 포인터
- TiKV
- Symbol
- 긴옵션
- 한빛미디어
- 전처리기
- OS 커널
- DBMS
- FreeBSD
- 컴퓨터 강좌
- SQLite
- TiDB
- Pointer
- Programming
- getopts
- 구조와 원리
- Windows via c/c++
- Golang
- 약어
- Today
- Total
sonumb
vim -c option을 사용하여 소스코드 정렬(indent) 하기. 본문
간혹 다수의 파일을 indentation 할 필요가 있다.
일일이 손으로 할 수 없을 만큼 파일의 개수가 많을 때 아래의 내용이 유용할 것이다.
일단 크게 두 가지 작업으로 나뉜다.
1. tab을 space로 대체.
\t을 스페이스로 곧장 대체되면 원소스 코드의 모습이 망가진다.
예를 들어 원소스에서 tab사이즈가 8인데, 내가 쓰는 환경에서는 tab크기가 4라고 하자.
곧장 %s/\t/ /g 명령어로 변환시키면, 주석의 위치가 들쑥날쑥 해진다.
따라서 retab 명령어를 쓰는 것이 좋다. (이 작업을 하기 전에 vimrc파일에서 tab 사이즈는 원소스 코드의 tab사이즈와 일치 시킨다.)
$ vi ~/.vimrc #(tab 사이즈와 관련된 것들은 모두 수정) $ for i in `find . -name "*.[ch]"`; do vi -c "retab" -c "wq" $i; done; $ vi ~/.vimrc #(tab 사이즈 복구) |
2. indentation
tab을 스페이스로 대체하였다면 이제 소스코드 포맷을 정렬할 때다.
인덴트를 맞출때, vim의 normal 모드에서 gg=G를 타이핑하여 맞추는 경우가 많다.
그러므로 vi 를 구동할때 -c 옵션에 이를 지정할 수 없으나, 할 수 있는 방법이 존재한다.
http://vim.wikia.com/wiki/Shifting_blocks_visually
이를 -c 옵션의 인자값으로 넘겨주면 아래와 같다.
$ for i in `find . -name "*.[ch]"`; do vi -c "argdo normal gg=G" -c "wq" $i; done;
|
혹은 vim 하나의 프로그램으로 전체를 수정할 수 있다.
( ⚠️그러나 mac에서 잘 동작하지 않는 것 같다. )
$ find . -name "*.[ch]"| xargs vi :argdo normal gg=G :wa :wq $ |