tab 대신 space 를 사용하면 각자의 tab 사이즈 설정과 상관없이 동일한 들여쓰기로 소스를 볼 수 있으므로 일반적으로 사용하는 것(PSR-2 등)을 권장하는 편이다.

하지만 꼭 탭 문자를 사용해야 하는 경우가 있다.


예로 Makefile 은 target 에서 실행해야 할 명령어를 탭 문자를 통해서 구분한다.


Makefile

CC=gcc
CFLAGS=-I.

hello: hello.o
     $(CC) $(CFLAGS) -o hello hello.o
CODE


위에서 $(CC) 로 시작하는 라인은 hello 라는 타겟을 실행하기 위한 명령어이며 라인의 시작은 tab 을 설정해야 한다.

하지만 위와 같이 tab 대신 space 를 사용하도록 설정했으면 space 가 입력되어 make 를 실행하면 아래와 같은 에러가 발생하게 된다.

$ make
 
Makefile:5: *** missing separator.  Stop.
CODE


이를 해결하려면 아래 절차를 수행하면 된다.


방법 1

  1. vim 의 명령 모드(: 입력)로 들어간다.
  2. 다음 명령을 입력한다.

    :inoremap <S-Tab> <C-V><Tab>
    CODE
  3. 이제 입력 모드에서 Shift-Tab 을 누르면 탭키가 입력되므로 Makefile 같이 tab 이 필요한 파일 편집에 사용하면 된다.

방법 2

탭이 필요할 경우 Ctrl-Q 를 누른후에 Tab 문자를 입력한다.

Ref