본문 바로가기

기타/IT Telecommunication

[IT] VIM에서 tab을 space로 간단히 변환하기

여러명이 코드 개발을 하는 경우, 공백을 쓸때 tab으로 쓰는 경우도 있고 space를 사용하는 경우도 있다.
큰 기업체에서는 프로젝트를 진행할 때, 내부에 정의된 Coding Rule에 따라  모든 개발자가 준수하도록 하고있으나,
보통의 경우 이를 무시하고 자신의 취향대로 하는게 보통이다.

그래서, 나타나는 현상이... tab size에 따라, 코드가 들쭉날쭉 하게 되는 문제.

대다수의 사람들이 tab size로 4를 쓰지만, 간혹 2, 8을 쓰는 사람이 있기에,
코드를 공동개발하는 경우에는 tab 대신 space로 indent를 통일하는게 바람직하다.

tab size를 고정크기로 하는 약속을 하고 시작해도 되지만,
이왕이면 tab을 쓸때 자동으로 space로 변환되게끔 해놓으면 코딩도 편하고,
코드의 가독성도 더 좋다.

이때 설정해주어야 하는 것이, expandtab 옵션이며 사용방법은 다음과 같다.

vim editing 모드에서 (간단히 :set et 로 해도 된다.)
:set expandtab 

매번 화일을 열어서 명령을 쳐주는게 귀찮다면,
본인의 루트에서 .vimrc 화일을 열어 아래의 두줄을 추가해놓는다.
set ts=4
au Bufenter *.\(c\|cpp\|h\) set et

(괄호 안의 c, cpp, h는 특정확장자를 가진 화일들을 편집할때만 tab을 space 로 자동변환하겠다는 의미)

위와 같이 설정해놓으면 *.c, *.cpp, *.h 화일을 vim으로 열어 insert 모드에서 작업할 때,
tab키를 치면 자동으로 space 4칸으로 변환되어 삽입된다.

기존에 이미 tab으로 작업했던 화일에서 tab을 모두 space로 바꾸고 싶다면?
vim으로 해당화일을 열어 아래 retab명령을 실행해 준다.
:retab
retab명령은 tab을 무조건 4개의 space로 변환해주는 것이아니라,
기존코드의 정렬 그대로 변환해준다. (tab으로 1칸만 차지하고 있었다면 space 1칸으로 매핑)

[태그] VIM, tab, space, retab, indent, 코드정렬, coding rule