나는이 질문이 여러 번 부탁 된 것을 알고 있지만 특히 문제를 식별 할 수 없기 때문에 주로 내 문제에 대한 해결책을 찾지 못한다.
다음은 이벤트의 타임 라인입니다.
- 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 칸으로 처음 확장하면 잘 작동하지만, 첫 번째 탭 내에서 탭을 더 중첩 시키면 그 것처럼 보입니다. 대신 탭을 삭제합니다.
다른 이상한 일들이 일어나고 있지만 실제로 패턴을 볼 수는 없습니다.
무슨 일이야?
tabstop=8
나는 .vimrc (와 tabstop=4
) 전에 파이썬을 알고 있기까지.
tabstop=8
, 나는 8- 구역 들여 쓰기에서 하나의 탭을 선택할 수 있습니다. 혼합 된 들여 쓰기 모드의 파이썬은 탭을 8 개의 공백으로 취급합니다. vim 구성이 이전에 어떻게 보이는지 모르겠습니다.
tabstop=4
대신에? 편집 : 아니면 그냥 변경해야합니까? tabstop
8 시까 지?
%s/\t/(eight spaces)/g
. 파이썬 코드에는 탭이 없어야합니다.
tabstop
Vim은 다음과 같은 가정하에 표시하거나 확장합니다.tabstop=4
. 나쁜 vim 설정으로 파일을 편집하기 전의 원본 소스가 있습니까?