2

私はvimを学ぼうとしています:-)自動インデントでPythonコードの意味を変更するのに本当に問題があります。以下のような動作に遭遇することなく、自動インデントの良さを得る方法はありますか?

私はPythonファイルから始めます:

me @ host:/ tmp $ cat pytest.py
Falseの場合:
    print('Never'、
          'この行を印刷')

print'常にこの行を印刷します。'

vim pytest.py、、gg=Gで自動インデント:wq

D'oh、スクリプトを台無しにしました:

me @ host:/ tmp $ cat pytest.py
Falseの場合:
    print('Never'、
            'この行を印刷')

    print'常にこの行を印刷します。'

これを本当にバニラに保とうとしています:

me @ host:/ tmp $ cat〜/ .vimrc
filetypeプラグイン
ファイルタイプのインデント
autocmd FileType python set sw = 4
autocmd FileType python set ts = 4
autocmd FileType python set sts = 4
autocmd FileType python set textwidth = 79
4

2 に答える 2

4

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

VIMでの自動インデントの要点は、言語の書式設定規則に従って空白をどこに配置するかをエディターに推測させることです。でも:

ここに画像の説明を入力してください

ご存知のように、Pythonの空白は重要です。医者が言うように:それならそれをしないでください。

于 2011-12-14T02:09:50.860 に答える
2

vimで自動インデントを機能させるには、タブストップ、シフト幅、ソフトタブストップ、エキスパンドタブの設定を編集中のファイルと一致させる必要があります。私はこのプラグインを使用します:

http://freecode.com/projects/vindect

これは、編集しているpythonファイルからこれらの設定を実行し、空白を別の方法で設定している別の人のファイルを編集した場合でも、vimが正しく動作することを確認します。

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

于 2011-12-14T09:55:04.327 に答える