Skip to content

原文(日本語に翻訳)

NO_COLOR が設定されているときにプロンプトのカーソルが消えてしまう問題を修正しました。

原文(英語)

Fixed prompt cursor disappearing when NO_COLOR is set

概要

ターミナルのカラー出力を無効化するための標準環境変数 NO_COLOR を設定している場合、Claude Codeのプロンプト入力のカーソルが表示されなくなる問題がありました。カーソルが見えないとどこに入力しているかわからなくなるため、非常に不便な状態でした。今回の修正でカラー出力が無効な環境でもカーソルが正しく表示されます。

基本的な使い方

bash
# NO_COLOR 環境変数を設定してClaude Codeを起動
export NO_COLOR=1
claude

# 修正前: カーソルが表示されず、入力位置が見えない
# 修正後: カーソルが正しく表示される(カラーなしで)

実践例

NO_COLOR が必要なシナリオ

bash
# スクリーンリーダーを使用している場合
# カラーコードがスクリーンリーダーの読み上げを妨げる
export NO_COLOR=1
claude

# CI/CDパイプラインでの使用
# ANSIカラーコードがログを読みにくくする
NO_COLOR=1 claude --print "コードをレビューしてください"

# カラー非対応の古いターミナルエミュレータ
export NO_COLOR=1
claude

NO_COLOR標準規格について

# NO_COLOR は https://no-color.org/ で定義された標準
# 値は任意(空文字でも"1"でも"true"でも有効)

# 設定方法:
export NO_COLOR=1      # 一般的な設定
export NO_COLOR=""     # 空文字でも有効
NO_COLOR=1 command     # コマンドごとの設定

# Claude Codeへの影響(修正後):
# - カラー出力なし(エラーメッセージ、ハイライト等)
# - カーソルは正常に表示される ← 今回の修正
# - テキストは通常の白黒で表示

アクセシビリティ設定での利用

bash
# 視覚的なアクセシビリティを考慮した設定

# ~/.zshrc での設定
export NO_COLOR=1          # カラー出力を無効化
export TERM=xterm-256color  # ターミナルタイプの指定

# この設定でも修正後はClaude Codeのカーソルが正常表示
claude

# スクリーンリーダーとの組み合わせ
# NO_COLOR=1 によりANSIエスケープコードが除去される
# → スクリーンリーダーがテキストをクリーンに読み上げられる

カーソル表示の確認

bash
# 修正の効果を確認する方法

# 1. NO_COLOR を設定
export NO_COLOR=1

# 2. Claude Code を起動
claude

# 3. プロンプト入力欄にカーソルが表示されることを確認
#    修正前: カーソルが消えていた(入力はできるが見えない)
#    修正後: カーソルが表示される

# 4. テキストを入力してカーソルが動くことを確認

注意点

  • NO_COLOR は環境変数として設定します。値は何でも有効(1true、空文字等)
  • カラー出力が無効になることで、シンタックスハイライト等の色付けも無効になります
  • カーソルはカラーではなくターミナルのネイティブカーソル機能で表示されるため、NO_COLOR の影響を受けるべきではありませんでした(今回の修正でその動作が実現)
  • FORCE_COLOR を設定してカラーを強制する場合はこの問題は発生しません
  • NO_COLORTERM=dumb を組み合わせている場合も、カーソルは正常に表示されます

関連情報