VimはPythonファイルで正しいインデントを使用しません


7

Vimでこれまで見たことのないものに遭遇しました。作業を計画しているソフトウェアのソースコードの一部を暫定的に変更しているときに、vimが追加したコード行のスペースが正しく表示されていないことに気付きました。Geditは正しい間隔でコードを表示します。VimのコードをVimウィンドウ内にあるように変更すると、Pythonコードでエラーが発生するため、Geditの間隔が正しいことを知っています。以下の画像を添付しました。追加した行は、「階乗を評価しようとしています」と出力する行です。短い.vimrcファイルも含めました。誰かこれを見たことがありますか?私は何ヶ月もvimを使用していますが、このようなことが起こったことを思い出すことはできません。

  • Vim(不正解):

    間違っている

  • Gedit(正解):

    正しい編集

  • Vimrc:

    Vimrcファイル


3
これは少し面倒なことかもしれませんが、オンにしset list listchars=tab:>-て最初の(Vim)画像を再度アップロードできますか?タブで何が起こっているかを確認するのに役立つと思います。
Tumbler41 2016年

vimrcが正常に動作しているように見えます。タブは必要に応じて4スペースです。ただし、ドキュメントの残りの部分ではスペースのみを使用しています。この行ではスペースを使用して問題を修正します。または、いずれにせよ、インデントにタブとスペースを使用する間で一貫性を保つ。
Tumbler41

すべてのスペースを使用して、うまくいきました。ただし、タブの解釈が異なることを期待しているので、私は驚いています。
BenB 2016年

回答:


10

Pythonファイルタイププラグインによってリセットされます。から/usr/share/vim/vim74/ftplugin/python.vim

" As suggested by PEP8.
setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8

このファイルは、Pythonファイルが読み込まれるたびに読み込まれます。個人的には、ここでインデント設定を追加するのは少し意外です。

とにかく、これをオーバーライドするには、vimrcでこれを使用します。

augroup python
    autocmd!
    autocmd FileType python setlocal noet ts=4
augroup end

これは、ftpluginファイルの後に読み込まれ、そこで設定された設定を上書きします。

コミュニティ標準はスペースを使用することなので、個人的には、Pythonファイルでタブを使用しないことをお勧めします。


ええだからfiletype plugin on、あなたがvimrcにいることを確認してください。set tabstop=8しかし、私はオーバーライドしません。その理由はここに
アントニー

2

私のためのソリューションは、私の中でのファイルタイププラグインの後に次の行を追加した~/.vimrcファイル

filetype plugin on
autocmd FileType python setlocal noexpandtab shiftwidth=4 softtabstop=4
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.