2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

classNameの予測変換で""じゃなくて{}を出したい!!

2
Last updated at Posted at 2025-10-12

背景

私は普段react.js(ts)で開発を行っているのですが、CSS moduleを利用してjsx(tsx)ファイルにスタイルを当てる時に苦しんでいます。

それはclassNameと入力した時にエディタの自動変換でこれが出る!

<div className="">
    <p>hoge</p>
</div>

おい!!!

求めているのは{}(カーリーブラケット)なんだよ!!と思いながら

<div className={styles.hoge}>
    <p>hoge</p>
</div>

と直してコードを書いていました。

流石に面倒だと思い始めたので解決方法がないか探してみると...
エディタ側でスニペットを設定することで解決できることがわかりました。
今回はその方法を共有します。

本題

注意事項

まず初めに、私はVSCodeを利用しています。そのため、ここで紹介するのはVSCodeでの解決方法なので他のエディタを使っている人はブラウザバックを推奨します。

本当の本題

実際に行うことは3ステップぐらいです。
所要時間は3分です。

Step1. スニペットの編集画面に行こう

Cmd + Shift + PまたはCtrl + Shift + Pでコマンドパレットを開き、検索バーでスニペットと入力してください。
スクリーンショット 2025-10-13 2.15.14.png
ここで、スニペットの構成を選択すると言語選択の画面が表示されます。
スクリーンショット 2025-10-13 2.16.18.png

ここで、react(typescript)と入力して
reactならjavascriptreact.json
typescriptならtypescriptreact.json
を選択してください。

Step2. スニペットの編集をしよう

ここからは、javascriptreact.jsonファイルを開いた場合で説明をしていきます。(typescriptreact.jsonを開いていてもやることは変わらないので必要に応じて読み替えながら進めていってください。)

まずjavascriptreact.jsonを開くと以下のような記述がされていると思います。

英語なのでよくわかりませんが、おそらく

prefix:あるスニペットを呼び出すためのトリガー
body:展開・挿入される内容(\$1, \$2 はタブストップ、\$0 は最終的な、\${1:label}, \${2:another} はプレースホルダー)
description:そのスニペットの説明

と書いてあります。(gemini調べ)

javascriptreact.json
{
	// Place your snippets for javascriptreact here. Each snippet is defined under a snippet name and has a prefix, body and 
	// description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
	// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. Placeholders with the 
	// same ids are connected.
	// Example:
	// "Print to console": {
	// 	"prefix": "log",
	// 	"body": [
	// 		"console.log('$1');",
	// 		"$2"
	// 	],
	// 	"description": "Log output to console"
	// }
}

ここからはこのファイルに記述を追加することで新たなスニペット(今回ClassNameと入力した時にダブルクォーテーションではなく、カーリーブラケットを出す)が使えるようにしていきます。

以下の文章をCtrl + CしてCtrl + Vしてください。

javascriptreact.json
{
  "ClassName with Braces": {
    "prefix": "className",
    "body": [
      "className={$1}"
    ],
    "description": "Inserts className with curly braces"
  }
}

終わりです。

動作確認

では動作確認をしていきます。

スニペットを追加したらファイルを保存して一度VSCodeを再起動してください。

スニペット動作確認.gif

はい、一番上に出てきてくれないと開発体験が悪いよ!!

って思った人が大半だと思いますのでこのスニペットを一番上に優先表示して終わりたいと思います。

Step3.スニペットを優先表示しよう

ではCmd + ,またはCtrl + ,で設定を開いてください。
そして検索バーにsnippetと入力してください。

スクリーンショット 2025-10-13 2.46.40.png

この画面でEditor:Snippet Suggestionsinlinetopに変更してください。

するとエディタの予測変換で今作ったスニペットが優先表示されるようになります。

最後に

いかがでしたか?

おまけ

この設定情報をチームで共有したい

この設定をリポジトリ内のファイルに記述して共有を行う方法を紹介して終わります。

リポジトリのルートに以下のようなパスでファイルを作成すれば良いです。

.vscode/project.code-snippets
{
  "ClassName with Braces": {
    "prefix": "className",
    "scope": "javascriptreact,typescriptreact",
    "body": ["className={$1}"],
    "description": "Inserts className with curly braces for the project",
  },
}

scopeという項目でこのスニペットを適用させる言語を選択することができます。

同じくスニペットの優先度変更を共有する場合は以下のように記述してください。

.vscode/settings.json
{
    "editor.snippetSuggestions": "top"
}
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?