각 줄의 시작 부분에 있는 각 탭 문자만 공백으로 바꿉니다.

각 줄의 시작 부분에 있는 각 탭 문자만 공백으로 바꿉니다.

따라서 파일의 모든 탭 문자를 공백으로 바꾸는 것은 어렵지 않습니다.
예를 들어 vim에서는 다음을 수행할 수 있습니다.%s/\t/ /gc

각 줄의 시작 부분에 있는 것을 바꾸고 중간에 있는 것을 바꾸지 않으려면 다음을 수행할 수 있습니다.%s/^\t/ /gc

그러나 시작 부분에 줄이 있고 여러 탭이 있는 줄, 중간에 탭이 있는 줄이 있는 경우 파일의 들여쓰기 구조를 유지하기 위해 줄 시작 부분의 각 탭을 공백으로 바꾸고 싶습니다. 무엇을 해야할지 모르겠습니다.

vim이나 sed 또는 일반적으로 정규식을 사용하세요.

답변1

평가 레지스터를 사용하여 원하는 수의 탭 문자를 적절한 수의 공백으로 바꿀 수 있습니다. 예를 들어:

:s/^\t\+/\=repeat('    ',len(submatch(0)))

설명하다:

:s/                                         " Replace
   ^                                        " At the start of a line
    \t\+                                    " One or more tabs
        /\=                                 " With the following evaluated as vimscript:
           repeat('    ',len(submatch(0)))  " 4 spaces times the length of the previously matched string

관련 정보