본문 바로가기

개발 도구/Vim

[ Vim ] 파일 전체를 tab에서 space로 변환 하기

반응형

물론입니다. 아래는 Vim을 이용해 Python 파일 내의 탭(tab) 공백을 스페이스(space)로 바꾸는 방법을 주제로 한 블로그 글 형태입니다.


Python 코드의 들여쓰기를 Vim에서 Tab → Space로 바꾸는 방법

Python에서는 **들여쓰기(indentation)**가 문법의 일부입니다. 그래서 코딩 스타일을 일관되게 유지하는 것이 중요하죠. 특히 Tab과 Space가 섞이면 디버깅하기도 어렵고, 협업 시 코드 충돌의 원인이 되기도 합니다.

이번 글에서는 Vim 에디터를 사용해 Python 파일에서 들여쓰기용 **탭(tab)**을 **스페이스(space)**로 바꾸는 방법을 소개합니다.
필요한 경우 일부분만 바꾸는 방법과 전체 파일을 한 번에 바꾸는 방법 두 가지 모두 다룹니다.


1. 현재 파일에서 Tab이 사용되고 있는지 확인하는 방법

Vim에서 파일을 열고 다음 명령어를 입력합니다:

:set list

이 명령은 공백 문자와 특수문자를 시각적으로 보여줍니다.

  • ^I : Tab 문자를 의미합니다.
  • · : Space (스페이스)를 의미합니다.

탭이 쓰인 부분이 ^I로 보이면, 해당 파일은 스페이스가 아니라 탭으로 들여쓰기 되어 있다는 뜻입니다.


2. 파일의 일부분만 Tab → Space로 바꾸는 방법

탭을 스페이스로 바꾸고 싶은 라인 범위를 지정한 뒤 아래 명령어를 입력합니다:

:'<,'>retab

또는 범위를 명시해서 직접 입력해도 됩니다:

:10,30retab

이 명령은 지정한 줄(10~30번 줄)의 탭을 설정된 shiftwidth만큼의 스페이스로 바꿔줍니다.

📌 참고: shiftwidth는 한 단계 들여쓰기를 몇 개의 스페이스로 바꿀지 정하는 옵션입니다. 일반적으로 Python에서는 4를 사용합니다.

:set shiftwidth=4

3. 전체 파일에서 Tab → Space로 일괄 변환하는 방법

파일 전체를 한 번에 정리하고 싶다면 다음 단계를 따르면 됩니다.

  1. 탭을 스페이스로 변환하도록 Vim 설정하기
:set expandtab
:set tabstop=4
:set shiftwidth=4
  • expandtab: Tab 키를 누르면 스페이스로 입력되게 설정
  • tabstop: 탭 문자를 몇 개의 스페이스로 간주할지
  • shiftwidth: 들여쓰기에 사용할 스페이스 수
  1. 전체 파일을 재정렬(retab)
:retab

retab 명령은 현재 tabstop과 shiftwidth 설정을 기준으로 기존의 탭 문자를 스페이스로 변환합니다.


4. 추가 팁: 저장 시 자동으로 Tab을 Space로 바꾸고 싶다면?

.vimrc에 다음 설정을 추가해두면 Python 파일을 열었을 때 자동으로 스페이스 기반으로 편집됩니다:

autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=4

5. 마무리

Python에서는 들여쓰기의 일관성이 필수입니다. Vim을 쓴다면 retab, expandtab, shiftwidth, tabstop 등의 명령어를 잘 활용해서 코드를 깔끔하게 관리하세요.

 

반응형