2011-12-14 9 views
2

私はvimを学ぼうとしています:-)私のpythonコードの意味を変更する自動インデントでいくつかの本当の問題を抱えています。下のような振る舞いをしなくても、自己インデントの良さを得る方法はありますか?Vim python indentingはコードセマンティクスを変更します

私はPythonのファイルで始まる:ああ、私は私のスクリプトを台無しvim pytest.pygg=G:wq

D'と

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

print 'Always print this line.' 

オートインデント:

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

    print 'Always print this line.' 

は維持しようこれは本当にバニラです:

 
[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の設定を一致させることの単なる質問です。あなたが編集しているのpythonファイルからこれらの設定をうまくいくと、Vimはあなたが別の人物は誰が違った彼らのホワイトスペースを設定ファイルを編集するために起こる場合でも正常に動作することを確認します

http://freecode.com/projects/vindect

:私はこのプラグインを使用しますあなたから。

編集:pythonソースファイルを完全にreindent(gg = Gを置き換える)したい場合は、このようなpython固有の再インデントが必要です:http://svn.python.org/projects/doctools/trunk/utils/reindent.pyこれは簡単にvimコマンドに変わります。

+0

それは彼にトラブルを与えている自己インデントではない、それはreindentコマンドだ。しかし、それは便利なリンクです。 – MikeyB

+0

私は謝罪しました。私はOPによって提供されたテストを実行するための時間を割いたので、完全な復帰がうまくいきません。次のように見えます:http://svn.python.org/projects/doctools/trunk/utils/reindent.pyは簡単にpython/vimプラグインに変換できます。代わりにそれを検討する価値があるかもしれません。 – Benj

+0

私の答えを編集すると、もう少し役立つようになりました。 – Benj

4

ええ、そうしないでください。

VIMのオートインデント全体のポイントは、空白が言語の書式設定ルールに従ってどこに行かなければならないかをエディタに推測させることです。しかし:あなたが知っているよう

enter image description here

Pythonの空白は、重要です。医師が言うように:Don't Do That Then.

+0

十分に、@MikeyB。それは私が思っていたものです。 (しかし、そこにはパッケージ、チュートリアルなどがあり、そこにはアートの状態が進んでいたかもしれないと思っていた...) – Bosh

関連する問題