명령을 사용하여 소스 파일의 모든 것을 자동으로 탭 해제하는 방법이 있습니까? [닫은]


11

그런 다음 자동으로 다시 들여 쓰기? 한 터미널 화면에서 다른 터미널 화면으로 코드를 복사하려고 시도했지만 테이블이 엉망이되었습니다.

나는이 기능을 무엇이라고 부르는지 몰랐기 때문에 구글에서 그것을 찾기가 어려웠다.



1
이 질문은 프로그래밍 도구에 관한 것이므로 주제를 벗어난 주제로 마무리하려고합니다. 도구에 대한 질문은 StackOverflow 또는이 경우 Vi.SE 에 더 적합합니다 . 그러나이 질문은 이전에 너무 오래되었습니다.

1
이 도구는 특정 도구의 사용에 관한 것이며 스택 오버플로 또는 (지금 요청 된 경우) vi.se에서 요청 되었으므로이 주제를 주 제외로 닫으려고 투표하고 있습니다.

답변:


9

Vim에는 retab문서를 탭하거나 탭을 해제 할 수 있는 명령이 있습니다. 이 같은 설정을 사용 tabstop하고 expandtab. 따라서 탭을 공백으로 바꾸려면 다음을 수행하십시오.

:%retab

자세한 내용은 retab설명서를 참조 하십시오.

Caveat Emptor : 줄의 시작 이 아닌 탭을 대체합니다 . 따라서 문자열 중간에 하드 탭을 사용하면 교체됩니다.


3
일반적으로 문자열에 실제 탭을 포함시키는 것은 나쁜 생각으로 간주됩니다. 그것은 여전히 ​​일어날 수 있지만 \t이러한 종류의 문제를 피하기 위해 선호됩니다.
스펜서 Rathbun

6

retab 명령을 실행하기 전에 @Kaleb의 답변을 확장하려면 (아직 답글이 없습니다)을 수행해야합니다 :set expandtab (set et). 그렇지 않으면 탭이 공백으로 바뀌지 않습니다.

또한 탭 스탑을 지정할 수도 있습니다. 다른 사용자가 만든 소스 코드에서 코드는 tabstops를 4 또는 2로 설정하여 작성됩니다. :%retab명령을 수행하기 전에 다른 tabstop을 사용해보십시오. 시험

:set ts=8 (the default)
:set ts=4 
:set ts=2  

어떤 설정이 가장 적합한 지 확인하십시오.

뒤로 이동하려면 (적절한 TAB 문자로 공백을 바꾸려면

:set noet
:%retab!

1

탭을 해제하면 탭을 공백으로 변경 하시겠습니까? 그렇다면 다음과 같이 전체 버퍼에서 탭을 공백으로 대체하십시오.

:%s/^I/    /g

대체의 오른쪽에 4 개의 공백이 있지만 원하는 수를 지정할 수 있습니다. 리터럴 ^I탭 문자 를 얻으려면 ^VTab 키를 누르십시오.

=명령으로 다시 들여 쓸 수 있습니다 . 버퍼의 전체 내용을 다시 들여 쓰려면 다음 명령을 사용하십시오.

gg
=G

그러면 맨 위로 이동 한 다음 모든 것을 맨 아래로 다시 들여 씁니다.


-1 : 고정 된 수의 공백으로 탭을 교체하는 것은 거의 유용하지 않습니다. 탭이 아닌 앞에 탭이 포함 된 행의 모양이 변경됩니다.
케빈 클라인
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.