Skip to content

原文(日本語訳)

VSCode: 入力フィールドに前置テキストがある状態で Enter キーを押したときにスラッシュコマンドが誤って実行される問題を修正しました

原文(英語)

VSCode: Fixed slash commands incorrectly being executed when pressing Enter with preceding text in the input field

概要

VS Code 版 Claude Code において、入力フィールドに既にテキストが入力されている状態でスラッシュコマンドを入力して Enter キーを押すと、意図せずコマンドが実行されてしまう問題が修正されました。v2.1.32 以降では、期待通りに動作します。

問題の詳細

v2.1.31 以前の問題動作

入力: "このファイルを確認してください /model"
↓ Enter キーを押す
結果: /model コマンドが実行され、モデル選択ダイアログが開く
期待: メッセージとして送信される

この問題により、以下のような不便がありました:

  • 文中にスラッシュコマンド名が含まれると誤動作
  • 意図しないコマンド実行によるワークフロー中断
  • ユーザーが注意深く入力する必要がある

v2.1.32 以降の正しい動作

入力: "このファイルを確認してください /model"
↓ Enter キーを押す
結果: メッセージとして Claude に送信される
期待通り: /model は通常のテキストとして扱われる

スラッシュコマンドは行頭、または空白文字の直後にある場合のみ実行されます。

実践例

通常のメッセージ内でスラッシュコマンド名を使用

以下は正しく動作する例です:

入力: "API の /users エンドポイントを確認してください"
結果: メッセージとして送信 ✓

入力: "ファイルパス src/components/Home.tsx を見てください"
結果: メッセージとして送信 ✓

入力: "/config を使って設定を変更する方法を教えてください"
結果: メッセージとして送信 ✓

スラッシュコマンドの正しい実行方法

行頭でのスラッシュコマンド実行:

入力: "/model"
↓ Enter キーを押す
結果: モデル選択ダイアログが開く ✓

入力: "/context"
↓ Enter キーを押す
結果: コンテキスト使用状況が表示される ✓

オートコンプリートとの組み合わせ

タイプ中の動作:

入力中: "/m"
表示: スラッシュコマンドのオートコンプリート候補
- /model
- /memory
- /mcp

↓ Tab キーで選択
入力: "/model"
↓ Enter キーを押す
結果: コマンドが実行される ✓

複雑なメッセージの例

以前は問題があったケース(v2.1.32 で修正):

入力: """
このプロジェクトでは /api/users エンドポイントがあります。
/model を使って確認してください。
また、/config の設定も見直しが必要です。
"""
↓ Enter キーを押す

v2.1.31 以前: /model コマンドが誤実行 ✗
v2.1.32 以降: メッセージとして正しく送信 ✓

スラッシュコマンドの正しい使用方法

基本ルール

  1. 行頭で使用: スラッシュコマンドは行の先頭で入力
  2. 前にスペースがある場合: 空白の直後でも実行される場合があります
  3. オートコンプリート: / を入力すると候補が表示されます

推奨パターン

✓ 正しい使い方:
/model
/context
/help

✓ スペース後も可能:
  /model

✓ 引数付き:
/resume session-name
/model sonnet

✗ 避けるべき:
この /model を確認   # メッセージとして送信されます(修正後)

VS Code 固有の動作

json
// VS Code settings.json での設定
{
  "claudeCode.autoCompleteSlashCommands": true,
  "claudeCode.slashCommandTrigger": "/"
}

関連する修正履歴

v2.1.32 での関連する修正:

関連する改善点:
- スラッシュコマンド選択ロジックの改善
- オートコンプリートの安定性向上
- 入力フィールドのパース処理最適化

過去のバージョンでの類似問題:

v2.1.30: スラッシュコマンドの引数ヒントの改善
v2.0.73: 履歴ナビゲーション中の選択表示修正
v2.0.41: 引数が正しく送信されない問題の修正

注意点

  • 意図的なコマンド実行: 行頭でスラッシュコマンドを入力した場合は、これまで通り実行されます
  • オートコンプリート: / を入力するとコマンド候補が表示されますが、選択しない限り実行されません
  • カスタムコマンド: .claude/commands/ に配置したカスタムスラッシュコマンドにも適用されます
  • CLI 版との違い: CLI 版 Claude Code では元々この問題は発生していませんでした
  • Shift+Enter: 改行を入力したい場合は Shift+Enter を使用します(設定により異なる場合があります)
  • エスケープ不要: 文中にスラッシュコマンド名があっても、エスケープする必要はありません

トラブルシューティング

スラッシュコマンドが実行されない場合

症状: スラッシュコマンドを入力しても実行されない

確認事項:
1. 行頭で入力しているか確認
2. オートコンプリートで正しいコマンドを選択
3. VS Code 拡張機能が最新版(v2.1.32 以降)か確認

オートコンプリートが表示されない場合

bash
# VS Code 設定を確認
code ~/.config/Code/User/settings.json

# 以下の設定を確認・追加
{
  "claudeCode.enableSlashCommands": true,
  "claudeCode.autoCompleteSlashCommands": true
}

カスタムコマンドが動作しない場合

bash
# カスタムコマンドの配置を確認
ls .claude/commands/

# コマンドファイルの形式を確認(Markdown frontmatter 必須)
cat .claude/commands/my-command.md

# VS Code を再起動
# Cmd+Shift+P (macOS) / Ctrl+Shift+P (Windows/Linux)
# > Reload Window

VS Code 特有の機能

コマンドパレットからの実行

Cmd+Shift+P (macOS) / Ctrl+Shift+P (Windows/Linux)
> Claude Code: Execute Command

ショートカットキーの設定

json
// keybindings.json
[
  {
    "key": "cmd+k cmd+m",
    "command": "claudeCode.executeCommand",
    "args": "/model"
  },
  {
    "key": "cmd+k cmd+c",
    "command": "claudeCode.executeCommand",
    "args": "/context"
  }
]

関連情報