2011-12-14 5 views
2

나는 vim을 배우려고합니다 :-) 자동 들여 쓰기로 인해 파이썬 코드의 의미가 바뀌는 것과 관련된 실제 문제가 있습니다. 아래에있는 것과 같은 행동을하지 않고 자동 삽입의 장점을 얻을 수있는 방법이 있습니까?Vim 파이썬 들여 쓰기가 코드 의미를 변경합니다.

나는 파이썬 파일을 시작합니다 유지하기 위해 노력

 
[email protected]:/tmp$ cat pytest.py 
if False: 
    print('Never', 
      'print this line') 

    print 'Always print this line.' 

: vim pytest.py, gg=G

 
[email protected]:/tmp$ cat pytest.py 
if False: 
    print('Never', 
      'print this line') 

print 'Always print this line.' 

자동 들여 쓰기

:wq는 D' 오, 내 스크립트를 엉망 이 바닐라 :

 
[email protected]:/tmp$ cat ~/.vimrc 
filetype plugin on 
filetype indent on 
autocmd FileType python set sw=4 
autocmd FileType python set ts=4 
autocmd FileType python set sts=4 
autocmd FileType python set textwidth=79 
+2

들여 쓰기가 필수적이지 않은 언어로 작성하는 경우에도 자동 들여 쓰기를 사용하지 않는 이유입니다. 코드를 작성하는 동안 코드를 깨끗하게 유지하고 모든 종류의 자동화 된 조작을 피하는 것이 좋습니다. – redShadow

답변

2

vim에서 자동 들여 쓰기 작업을하는 것은 편집중인 파일과 일치하는 tabstop, shiftwidth, softtabstop 및 expandtab 설정을 사용하는 것입니다. 편집중인 파이썬 파일에서 이러한 설정을 작동하고 정력은 다른 사람이 사람을 다르게 자신의 공백을 설정 파일을 편집하는 일이 있더라도 제대로 동작하는지 확인합니다

http://freecode.com/projects/vindect

:이 플러그인을 사용 너에게서.

편집 : python 소스 파일의 전체 검색을 수행하려면 (gg = G를 대체하기 위해) 다음과 같은 파이썬 고유의 다시 색인이 필요합니다. http://svn.python.org/projects/doctools/trunk/utils/reindent.py 당신은 쉽게 vim 명령이 될 수 있습니다.

+0

그것은 그에게 곤경을주고있어 자동 indent 아니에요, 그것은 다시 명령입니다. 그러나 그것은 편리한 링크입니다. – MikeyB

+0

OP에 의해 제공된 테스트를 실행하기 위해 시간을 내었으므로, 이제 완전히 다시 읽기가 작동하지 않는다는 것을 알게되었습니다. 다음과 같이 보입니다 : http://svn.python.org/projects/doctools/trunk/utils/reindent.py 쉽게 파이썬/vim 플러그인이 될 수 있습니다. 그것은 대신 가치가있을 것입니다. – Benj

+0

내 대답을 편집하면 도움이 될 것입니다. – Benj

4

네, 그렇게하지 마십시오.

VIM에서 autoindent의 전체 요점은 공백이 언어 서식 규칙에 따라 가야하는 곳에서 편집기가 추측하도록하는 것입니다. 그러나 : 당신이 알고

enter image description here

파이썬 공백은 중요하다. 의사가 말하듯이 : Don't Do That Then.

+0

충분히 공정하게, @MikeyB. 그게 내가 의심했던 것 같아. (그러나 거기에 충분한 패키지, 튜토리얼 등 내가 거기에 예술의 상태를 고급 것으로 나타났습니다 ...) – Bosh

관련 문제