Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>yumNovelExtNew to Visual Studio Code? Get it now.
yumNovelExt

yumNovelExt

yum communication

|
176 installs
| (0) | Free
VS Codeで小説を書こう! Web小説執筆べんり機能
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

小説書き向けVSCode拡張機能

VSCodeで小説を書く手伝いをするエクステンションです。

各部分で色分けをしたり、ホバー表示や形式変更など、あると小説の執筆がちょっとだけ便利になるでしょう。

hover

ルビの抽出

コマンドパレットより、Novel: ルビの抽出(現在のファイル)を実行することで現在編集中のファイルからルビ設定されている部分を抽出して新規ファイルに出力します。

フォルダ内全ての原稿ファイルを対象にルビを抽出する場合はNovel: ルビの抽出(全てのファイル)を使用してください。ruby.noveldata に出力されます。

※ 対象となるファイルは *.txt, *.nvl のみです。

形式の変換

小説投稿サイトやepub向けのHTMLに変換します。その際、以下の書式整形が行われます(個別に機能OFFも可能)

  • 段落の字下げ
  • 疑問符・感嘆符の後のスペース挿入
  • 三点リーダーの変換("..."や"・・・"を"…"にします)、偶数個へそろえる
  • ダッシュ(棒)の変換、偶数個へそろえる
  • 台詞の末尾の句点の一括挿入、削除

テキストエディタの右クリックメニューより『カクヨム』向けに出力や『小説家になろう』向けに出力を実行してください。

※ 変換後の文書は新規ファイルに出力されます。

縦書きプレビュー

コマンドパレットより、Novel: 縦書きプレビューを実行することで、執筆した原稿を縦書きでプレビューできます。プレビューでは傍点やルビが表示されるだけではなく、自動的に段落の字下げが行われ、感嘆符や疑問符の後ろの空白挿入などの整形されたテキストが表示されます。

執筆に使用している横書きの画面と違うレイアウトで見ることで、原稿チェックの精度は向上することでしょう。

ハイライト

フォルダまたはワークスペースのsettingsに設定することで、各部分に色がつきます。

※対象は .txt および .nvl

設定できる項目は以下の通りです。

scope 説明
novel.numerals 数詞(漢数字、算用数字ともに同色)ただし、一桁の漢数字は認識しません。
例)5、三百、二〇二一
novel.text.dialogue 台詞
先頭が鉤括弧で開始し、末尾が鉤括弧で終了している行です。
例)「すべて理解しました!」
novel.text.ruby ルビ(本体、ルビともに同色)、カクヨム式傍点
ルビの形式:
|ルビを振る文字《ルビとなる文字》
カクヨム式傍点の形式:
《《傍点を振る文字》》
novel.text.katakana カタカナ
novel.text.kanji 全ての漢字
novel.text.kanji.common 常用漢字
novel.text.punctuation 句読点
疑問符や感嘆符も含みます。
novel.keyword.region 地理
novel.keyword.character.name 名前
novel.keyword.character.surname 姓
novel.keyword.character.family 家名
novel.keyword.character.title 役位名
novel.keyword.character.baptism 洗礼名
novel.keyword.character.nickname ニックネーム
novel.keyword.family 家系
novel.keyword.magic 魔法
novel.keyword.monster 魔物・怪物
novel.keyword.animal 動物
novel.keyword.plant 植物
novel.keyword.crop 作物
novel.keyword.food 食品・料理

※ novel.keyword... は固有名詞設定した語の色指定用です。

設定例)フォルダ設定の場合 .vscode/settings.json

以下では、台詞をピンク、常用漢字を白、非常用漢字を下線付きの黄色、キーワードをオレンジ色にしている。

{
  "editor.tokenColorCustomizations": {
    "textMateRules": [
      {
        "scope":"novel.text.dialogue",
        "settings": {
          "foreground": "#ffaaff"
        }
      },
      {
        "scope":"novel.text.kanji",
        "settings": {
          "foreground": "#ffffaa",
          "fontStyle": "underline"
        }
      },
      {
        "scope":"novel.text.kanji.common",
        "settings": {
          "foreground": "#ffffff",
          "fontStyle": ""
        }
      },
      {
        "scope":"novel.keyword",
        "settings": {
          "foreground": "#cc8800"
        }
      }
    ]
  }
}

設定例)ワークスペースの場合 novel-title.code-workspace

以下では、数字を青に、人名を緑にしている。

{
  "folders": [
  ],
  "settings": {
    "editor.tokenColorCustomizations": {
      "textMateRules": [
        {
          "scope":"novel.numerals",
          "settings": {
            "foreground": "#0000ff"
          }
        },
        {
          "scope":"novel.keyword.character",
          "settings": {
           "foreground": "#008800"
          }
        }
      ]
    },
    "editor.wordWrap": "on",
       "editor.fontSize": 12,
    }
  },
  "extensions": {
    "recommendations": [
      "yumCommunication.yum-novel-ext"
    ]
  }
}

固有名詞設定

uniquenouns.json にて指定。VSCodeで開くフォルダ、もしくはワークスペースのルート(code-workspaceファイルと同じ階層)に配置してください。

※ 設定によりファイル名は変更可能

設定

settings内に、キーワードの設定を記述することができます

  • nameOrder: 人物のフルネーム表記の際の名前の順序です。
  • nameSeparator: 人物のフルネーム表記する際に姓や名の間に入れる文字を指定します。

例)
以下の設定の場合、name = "ティアリッテ", title = "シュレイ", family = "エーギノミーア"の場合にティアリッテ・シュレイ・エーギノミーアとなる。

{
  "settings": {
    "nameOrder": ["name", "title", "family"],
    "nameSeparator": "・"
  }
}

例)
以下の設定の場合、name = "太郎", family = "山田"の場合に山田太郎となる。

{
  "settings": {
    "nameOrder": ["family", "name"],
    "nameSeparator": ""
  }
}

地域

regions内に地域の設定を記述します。地域は階層構造を持つことができます。
class, descriptionの内容はバルーン表示に使用します。

  • name: 地域名(必須)
  • type: 地域の階層の種類(未対応)
  • class: 階層の中での種類
  • description: 説明
  • child: その地域の中の一つ下の階層

※ description内での改行に\nを使用することができます。また、マークダウン記法を使用することができます。

例)

{
  "regions": [
    {
      "name": "バランキル",
      "type": "国",
      "class": "王国",
      "description": "物語の舞台となる国。大陸の東方に位置する",
      "child": [
        {
          "name": "ブェレンザッハ",
          "type": "領地",
          "class": "公爵領",
          "description": "主人公の嫁ぎ先の地。国の西の端に位置する",
          "child": [
            {
              "name": "グィニハシ",
              "type": "町",
              "description": "隣国からの侵攻にて滅亡してしまった"
            }, {
              "name": "アーウィゼ",
              "type": "町",
              "description": "グィニハシが亡びたため、隣国に対しての防衛の要はこの町に移っている"
            }
        }, {
          "name": "エーギノミーア",
          "type": "領地",
          "description": "主人公の出身地。国の東海岸に位置する"
        }
      ]
    }
  ]
}

人物

characters 内に人物を一覧で設定できます。

descriptionの内容はバルーン表示されます。

  • name:地域名(必須)
  • title: 役位名
  • surname: 姓
  • family: 家名(複数指定可能)
  • domain: 領地名(複数指定可能)
  • clan: 一族名
  • baptism: 洗礼名
  • nickname: ニックネーム
  • description: 説明

ルビや敬称等も設定できるようにしたい。

例)

{
  "characters": [
    {
      "name": "ミズルアーヴァ",
      "title": "ターナー",
      "family": "バランキル"
      "firstperson": "余",
      "secondperson": "|貴方《きほう》",
      "description": "国王"
    }, {
      "name": "ティアリッテ",
      "title": "シュレイ",
      "family": ["エーギノミーア", "ブェレンザッハ"],
      "nickname": "ティア",
      "age": "1年目時に8歳",
      "firstperson": "私",
      "secondperson": "|貴方《あなた》",
      "description": "主人公"
    }, {
      "name": "ザクスネロ",
      "family": "モレミア"
    }
  ]
}

家系

families 内に家系を一覧で設定できます。

descriptionの内容はバルーン表示されます。

  • name: 地域名(必須)
  • peerage: 役位・地位
  • faction: 派閥
  • description: 説明
{
  "families": [
    {
      "name": "デォフナハ",
      "peerage": "男爵",
      "faction": "ターナー",
      "description": "公爵に匹敵する影響力を持つ東の貴族。"
    },
    {
      "name": "ブェレンザッハ",
      "peerage": "公爵",
      "faction": "トゥジェ",
      "description": "第一の公爵家で西方貴族。"
    }
  ]
}

その他

  • magic: 魔法
  • monster: 魔物・怪物
  • animal: 動物
  • plant: 植物
  • crops: 作物
  • foods: 食べ物・料理

これらは全て、以下の二つのみ設定できます。

  • name: 名称(必須)
  • description: 説明

名前はルビの指定が可能ですが、現在は対応していません。(baseのみ拾われる)

  • base: 基本となる名前
  • ruby: ルビを指定
  • body: ルビを振られる語を指定

※ rubyとbodyは両方指定することはできません

例)

{
  "monsters": [
    {
      "name": {
        "base": "雪の魔獣",
        "ruby": "セレギュム"
      },
      "description": "白い鱗に覆われた狼。体長2〜3m\n\n氷の魔獣(エレギュム)とは別。"
    }, {
      "name": {
        "base": "氷の海魔",
        "ruby": "グェドゥム"
      },
      "description": "見た目はほぼトド。体長3m前後"
    }
  ],
  "animals": [
    { "name": "金羊", "description": "体長1〜1.5m" },
    { "name": "黄豹", "description": "体長7~10m" }
  ],
  "crops": [
    { "name": "大菜", "description": "巨大なホウレンソウ" },
    { "name": "甘瓜", "description": "黄色いトマト" },
    { "name": "夏紫菜", "description": "ムラサキキャベツ" }
  ]
}
  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2025 Microsoft