Vimには8スペースのタブがありました。その後、4 つのスペースに変更しましたが、4 つのスペースに変更する前に書いたコードに行を追加するたびに、すべてがうまく並んでいるにもかかわらず、インデントの不一致エラーが発生します。この問題を回避する方法はありますか?
4 に答える
あなたは:%retab...をしましたか?
タブストップオプションだけを変更しましたか?
4 つのスペースを使用します (実際のタブ ヒットを挿入するために、タブを押したときにスペースを埋めますctrl-v tab)。.vimrc のタブ関連の設定は次のとおりです。
" tabs
set tabstop=4
set shiftwidth=4
set expandtab
タブにスペースを入れると、常にタブの代わりにスペースが挿入され、コードは常に同じように見えます。
タブを使用すると、ツールごとにタブの表示が異なり、生産的な作業を行う代わりに、タブ (8,4,3.5) に表示するスペースの数を設定するのに時間を費やすことになります。
または、次のいずれかを選択します (vim 7.1 ヘルプ タブストップから):
Note: Setting 'tabstop' to any other value than 8 can make your file
appear wrong in many places (e.g., when printing it).
There are four main ways to use tabs in Vim:
1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
(or 3 or whatever you prefer) and use 'noexpandtab'. Then Vim
will use a mix of tabs and spaces, but typing <Tab> and <BS> will
behave like a tab appears every 4 (or 3) characters.
2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
'expandtab'. This way you will always insert spaces. The
formatting will never be messed up when 'tabstop' is changed.
3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
|modeline| to set these values when editing the file again. Only
works when using Vim to edit the file.
4. Always set 'tabstop' and 'shiftwidth' to the same value, and
'noexpandtab'. This should then work (for initial indents only)
for any tabstop setting that people use. It might be nice to have
tabs after the first non-blank inserted as spaces if you do this
though. Otherwise aligned comments will be wrong when 'tabstop' is
changed.
Python コードの場合、おそらく次のようにするのが最適です。
:set tabstop=8
:set shiftwidth=4
:set expandtab
そうすれば、「業界標準」の 8 つのスペース タブを引き続き使用できますが、それらをファイルに入れることはありません。これにより、古いコードもきれいに保たれますが、時間の経過とともに残ったものをすべて手動で移動する必要があります。あなたも必ず :retab したくなるでしょう。
すべてを 4 つのスペース インデントに置き換えたい場合は、
:set tabstop=4
:retab
:set tabstop=8
これにより、タブごとに 4 つのスペースでスペースを使用してすべてが再インデントされ、正常なデフォルトに戻ります。
明らかに、これは意見に左右されますが、私の本では、ファイルを猫にしたときに得られるもの以外に設定されたタブを使用して、問題が発生しています。
不一致を視覚化する最良の方法は、空白の問題を表示する:setlistです。
set listchars=tab:>-,trail:-,nbsp:+ "This is terminal friendly but you can make fancy
set list
間隔を空けたインデントが標準である場合、これはPython編集に不可欠な設定だと思います。特にファイルが同僚によって編集されている場合。
また、「コードレイアウト」のスタイルガイドも再確認しました。http://www.python.org/dev/peps/pep-0008/で指定されているように使用したいpython-ttオプションがあります。タブとスペースを混在させると、警告とエラーがスローされます。
これを単体テストに組み込むことができます。pepは新しいコードに4つのスペースを推奨しているようです。オープンソースプロジェクトに貢献するつもりなら、変更を検討することをお勧めします。
また、eolで空白を削除するために私が持っている余分な整頓のために
nnoremap <leader>wd :%s/\s\+$//<cr>