# `MD010` - ハードタブを使用しないでください

タグ: `hard_tab`, `whitespace`

エイリアス: `no-hard-tabs`

パラメーター:

- `code_blocks`: コードブロックを含めるかどうか (`boolean`, デフォルト `true`)
- `ignore_code_languages`: 無視するフェンス付きコードの言語 (`string[]`, デフォルト `[]`)
- `spaces_per_tab`: ハードタブ1つあたりのスペース数 (`integer`, デフォルト `1`)

修正可能性: 一部の違反はツールによって自動修正可能です。

このルールは、インデントにスペースではなくハードタブ文字が含まれている行に対してトリガーされます。修正するには、ハードタブ文字をすべてスペースに置き換えてください。

例:

<!-- markdownlint-disable no-hard-tabs -->

```markdown
テキスト

	* リスト項目のインデントにハードタブ文字が使用されています
```

<!-- markdownlint-restore -->

修正例:

```markdown
テキスト

    * 代わりにスペースを使用してリスト項目をインデントしています
```

コードブロックやコードスパンに対してこのルールを除外することも可能です。その場合は、`code_blocks` パラメーターを `false` に設定してください。Markdownツールによるタブの扱い（4スペースか8スペースかなど）が一貫していない場合があるため、デフォルトではコードブロックも検査対象に含まれています。

コードブロックがスキャン対象である場合（デフォルト、または `code_blocks` が `true` の場合）、`ignore_code_languages` パラメーターに無視したい言語のリストを設定できます（これにより、その言語のコードブロック内ではハードタブが許可されます）。これは、ハードタブを必須とする言語のコードをドキュメントに含める場合に便利です。

デフォルトでは、このルールの違反を修正する際、タブは1つのスペース文字に置き換えられます。異なる数のスペースを使用したい場合は、`spaces_per_tab` パラメーターに希望の値を設定してください。

根拠: ハードタブはエディターによってレンダリング結果が異なることが多く、スペースよりも扱いにくい場合があります。

詳細情報:

- <https://agiletribe.wordpress.com/2011/10/27/18-dont-use-tab-characters/>
- <https://www.jwz.org/doc/tabs-vs-spaces.html>
- <https://adamspiers.org/computing/why_no_tabs.html>
