태그 보관물: text-editing

text-editing

Vim : 탭을 공백으로 변경하기 python2.7 대신 python3을 사용하여 .py

나는이 질문이 여러 번 부탁 된 것을 알고 있지만 특히 문제를 식별 할 수 없기 때문에 주로 내 문제에 대한 해결책을 찾지 못한다.

다음은 이벤트의 타임 라인입니다.

  • python2.7로 작성된 오래된 파이썬 파일 열기 – 모든 것이 정상입니다.
  • python2.7 대신 python3을 사용하여 .py 파일을 실행하기위한 키 바인딩 변경 – 예상대로 많은 IndentError s이지만 파일은 여전히 ​​구조체 / 레이아웃 / 공백 / 탭 수와 동일합니다.
  • 추가 된 expandtab 내 .vimrc에 – 더 이상 IndentError 더 이상 불일치가 있지만 새로운 IndentError 왜냐하면 내 소스 코드의 구조가 모두 엉망이 되었기 때문입니다.
  • 나는 제거한다. expandtab 내 .vimrc에서 그리고 나는 여전히 죽이기 소스에서 똑같은 것을 얻는다. 심지어 세션을 죽이면, 꽤 iTerm이 github에서 신선한 소스를 가져온다 … 왜?

그냥 분명히하기 위해 지난 몇 달 동안 내 vimrc에서 변경된 두 가지 사항 만 있으며 두 가지 변경 사항이 오늘 아침에 이루어졌습니다. 첫 번째는 재편성 중이 었습니다. <F9> 2.7 대신에 파이썬 3을위한 셸 명령을 내렸고, 소스 코드의 구조에는 영향을 미치지 않았다. 두 번째 변화는 expandtab 모든 것을 망쳐 놓은 … 제거 expandtab 나의 vim 경험을 그것을 추가하기 이전의 방식으로 되돌려주지 않는다.

필자의 출처에 대한 구조적인 변경은 준결위적 인 것이므로 실제로 어떤 일이 일어나는지 설명하겠습니다.

예전처럼 :

class GUI():
    def __init__(self):
        suite of code

이제 다음과 같이 보입니다.

class GUI():
    def __init__(self):
    suite of code

모든 중첩 된 코드처럼 보이기 때문에 전반적으로 이렇게됩니다. 즉, 탭을 4 칸으로 처음 확장하면 잘 작동하지만, 첫 번째 탭 내에서 탭을 더 중첩 시키면 그 것처럼 보입니다. 대신 탭을 삭제합니다.

다른 이상한 일들이 일어나고 있지만 실제로 패턴을 볼 수는 없습니다.

무슨 일이야?



답변

이 들기는 다른 모든 들여 쓰기 수준이 떨어지면 일반적으로 들여 쓰기 당 4 개의 공백이있는 코드를 보는 증상이지만 다른 모든 줄에는 8 개의 공백 탭이 있습니다 (예 : 4s, 1t, 1t4s, 2t), tabstop 4로 설정합니다.

파이썬 코드의 경우 코드의 모든 탭을 8 개의 공백으로 바꾸어야합니다. 통역사가이를 처리하는 방식 이었기 때문입니다. 일반적으로 다음과 같은 상황을 처리 할 수 ​​있습니다. :retab 명령 환경 tabstop 소스 코드가 원래 작성된 값으로 설정합니다.

:set ts=8
:retab 4

만약 expandtab retab가 탭을 공백으로 바꿉니다.


답변