Markdownで文章を書いていると、あとから見出しの階層を変更したくなることがあります。
たとえば、次のような文章があったとします。
# 見出し
## 小見出し
### さらに小さい見出し
ここで、この部分全体を一階層下げたい場合、
## 見出し
### 小見出し
#### さらに小さい見出し
と変更する必要があります。
数個なら手作業でも問題ありませんが、見出しが増えてくると面倒です。
VS Codeでこれを簡単に行える拡張機能が「Markdown Heading Tools」です。
Markdown Heading Toolsとは
Markdown Heading Toolsは、Markdownの見出し構造を操作するためのVS Code拡張機能です。
主な機能は次のとおりです。
- 見出しを一階層上げる
- 見出しを一階層下げる
- 現在のセクション全体の階層を変更する
- 選択範囲内の見出しをまとめて変更する
- 見出し番号を追加・変更・削除する
- 見出しから目次を生成する
Markdown全体を編集する多機能な拡張機能というより、「見出し構造の操作」に特化したツールです。
インストール方法
VS Codeの拡張機能画面を開き、
Markdown Heading Tools
で検索してインストールします。
Visual Studio Marketplaceから探すこともできます。
見出しをまとめて一階層下げる
特に便利なのが、複数の見出しをまとめて一階層変更する機能です。
たとえば、
# Linux
## シェル
### Bash
## エディタ
### Vim
### Emacs
という文章があるとします。
これを別の大きな見出しの下へ移したため、全体を一階層下げたいとします。
対象範囲を選択して、
Alt + →
を押すと、
## Linux
### シェル
#### Bash
### エディタ
#### Vim
#### Emacs
となります。
単純にすべての行へ#を追加するのではなく、選択範囲内のMarkdown見出しだけが変更されます。
本文はそのまま残ります。
一階層上げる
逆に見出しを一階層上げる場合は、
Alt + ←
を使用します。
たとえば、
## Linux
### シェル
#### Bash
を選択してAlt + ←を実行すると、
# Linux
## シェル
### Bash
となります。
つまり、基本操作は次の2つだけ覚えておけば使えます。
Alt + ← 見出しを一階層上げる
Alt + → 見出しを一階層下げる
選択しなければセクション全体を変更できる
Markdown Heading Toolsのおもしろいところは、選択範囲がある場合とない場合で動作が変わることです。
範囲を選択している場合は、その中にある見出しが対象になります。
一方、何も選択していない状態では、カーソルがある現在のセクションが対象になります。
たとえば、
## シェル
本文
### Bash
本文
### Zsh
本文
というセクションで階層を下げると、
### シェル
本文
#### Bash
本文
#### Zsh
本文
のように、配下の見出しも一緒に移動します。
アウトラインの一部分を丸ごと移動させる感覚で操作できます。
コマンドパレットからも実行できる
ショートカットを覚えていなくても、Ctrl + Shift + Pでコマンドパレットを開き、
Markdown Heading Tools
と入力すれば各コマンドを実行できます。
見出し階層については、主に次のコマンドがあります。
Promote Headings in Selection
Demote Headings in Selection
Promote Current Section
Demote Current Section
「Promote」が階層を上げる、「Demote」が階層を下げる操作です。
見出し番号も操作できる
Markdown Heading Toolsには、見出しレベルの変更だけでなく、見出し番号を扱う機能もあります。
たとえば、
# 概要
## 準備
## 基本操作
### 操作1
### 操作2
## まとめ
という構造から、階層に応じた番号を構築できます。
# 1. 概要
## 1.1 準備
## 1.2 基本操作
### 1.2.1 操作1
### 1.2.2 操作2
## 1.3 まとめ
反対に、対応している形式の見出し番号を削除する機能もあります。
長めの技術文書をMarkdownで管理するときには便利です。
目次の生成もできる
見出しからMarkdown形式の目次を作成する機能も用意されています。
コマンドパレットから、
Markdown Heading Tools: Insert Table of Contents
を実行します。
現在のカーソル位置より下にある見出しを調べ、Markdownリンク形式の目次を挿入してくれます。
ただし、現在の仕様では多階層の目次を完全に構築する機能ではなく、対象範囲の最上位レベルの見出しが目次になります。
目次生成を主目的とする拡張機能というより、見出し操作の補助機能と考えたほうがよいでしょう。
置換でもできるが意外と面倒
もちろん、見出し階層の変更だけならVS Codeの正規表現置換でもできます。
たとえば、行頭の#を対象にして置換する方法があります。
しかし、
# 見出し
## 小見出し
### 小小見出し
のような構造を保ったまま一括変更したいだけなのに、毎回検索・置換を設定するのは少し大げさです。
特に文章の構成を考えている途中では、
「この章を一段下へ」
「やっぱり一段上へ」
という変更が何度も発生します。
そのたびに置換するより、対象を選択してAlt + →またはAlt + ←と操作できるほうが直感的です。
EmacsのOrg modeに近い感覚で操作できる
この操作は、EmacsのOrg modeでアウトラインの階層を上げ下げする感覚に少し似ています。
Markdownはシンプルで扱いやすい反面、標準では文書構造そのものを編集する機能がそれほど充実していません。
Markdown Heading Toolsを追加すると、単なるテキストとして#を書き換えるのではなく、「見出しの階層を操作する」という感覚で編集できるようになります。
大きな拡張機能ではありませんが、Markdownで長い文章を書く場合には意外と便利なツールです。
特に、
Alt + ← 一階層上げる
Alt + → 一階層下げる
の2つだけでも、Markdownのアウトライン編集がかなり楽になります。


コメント