Claude Code ターミナル設定完全ガイド|ステータスライン・キーバインド・環境変数・複数行入力

Claude Code ターミナル設定完全ガイド|ステータスライン・キーバインド・環境変数・複数行入力 AI開発

Claude Codeをより快適に使うために、ターミナル環境を自分好みにカスタマイズできます。セッション情報・コスト・コンテキスト使用率をリアルタイムで表示するカスタムステータスライン、よく使う操作を自分のキーに割り当てるキーバインド設定、Shift+Enterで複数行入力を可能にするターミナル統合設定など、知っておくと日々の作業効率が大きく向上します。

この記事では、Claude Codeのターミナル設定に関する機能を体系的に解説します。Claude Code全般の概要はClaude Code完全ガイドを、settings.jsonの全フィールドはsettings.json完全リファレンスを参照してください。

スポンサーリンク

カスタムステータスライン

Claude Codeのステータスラインは、ターミナルの下部に表示される情報バーです。デフォルトでもモデル名・処理状況が表示されますが、自分でスクリプトを書くことでコンテキスト使用率・コスト・Worktree情報などを追加表示できます。

/statuslineコマンドで自動生成(推奨)

Claude Code上で/statuslineコマンドに表示したい内容を説明するだけで、Claude Codeが~/.claude/statusline.shスクリプトを自動生成して設定します。

/statuslineコマンドの使い方
# コンテキスト使用率をプログレスバーで表示
/statusline モデル名とコンテキスト使用率をプログレスバー付きで表示してください

# コストと処理時間を表示
/statusline 合計コスト(ドル)と処理時間を表示してください

# Git情報も一緒に表示
/statusline モデル名・コンテキスト使用率・Gitブランチ名を表示してください

手動でsettings.jsonに設定する

~/.claude/settings.jsonstatusLineフィールドで直接設定できます。

~/.claude/settings.json(ステータスライン設定)
{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.sh",
    "padding": 2
  }
}

commandには実行するスクリプトのパスを指定します。paddingは左右の余白(文字数)です。スクリプトは標準入力(stdin)からJSONを受け取り、標準出力に表示する文字列を出力します。

JSONフィールド一覧

ステータスラインスクリプトが受け取るJSONには以下のフィールドが含まれます。

フィールド 説明
model.id 使用中のモデルID(例: claude-sonnet-4-6
model.display_name 表示用モデル名(例: Claude Sonnet
context_window.used_percentage コンテキストウィンドウの使用率(0〜100)
context_window.remaining_percentage コンテキストウィンドウの残り率
cost.total_cost_usd セッション累計コスト(USD)
cost.total_duration_ms セッション累計処理時間(ミリ秒)
cost.total_lines_added セッション累計追加行数
cost.total_lines_removed セッション累計削除行数
rate_limits.five_hour.used_percentage 5時間レート制限の使用率(Pro/Maxプランのみ)
worktree.name 現在のWorktree名
worktree.branch 現在のブランチ名
vim.mode VIMモード(NORMAL / INSERT
session_id セッションID

ステータスラインスクリプトの実装例

~/.claude/statusline.sh(コンテキスト使用率プログレスバー)
#!/bin/bash
# stdinからJSONを読み込む
data=$(cat)

# jqでフィールドを抽出
model=$(echo "$data" | jq -r '.model.display_name // "Unknown"')
ctx_pct=$(echo "$data" | jq -r '.context_window.used_percentage // 0')
cost=$(echo "$data" | jq -r '.cost.total_cost_usd // 0')

# プログレスバー生成(10文字)
bar_filled=$(echo "$ctx_pct" | awk '{printf "%.0f", $1/10}')
bar=""
for i in $(seq 1 10); do
  if [ "$i" -le "$bar_filled" ]; then
    bar="${bar}█"
  else
    bar="${bar}░"
  fi
done

# 出力
printf " %s | ctx: %s %d%% | $%.4f " "$model" "$bar" "$ctx_pct" "$cost"
~/.claude/statusline.sh(Git情報付き)
#!/bin/bash
data=$(cat)

model=$(echo "$data" | jq -r '.model.display_name // "Unknown"')
ctx_pct=$(echo "$data" | jq -r '.context_window.used_percentage // 0')
branch=$(git -C "${PWD}" rev-parse --abbrev-ref HEAD 2>/dev/null || echo "no-git")

printf " %s | %s%% | %s " "$model" "$ctx_pct" "$branch"
ステータスラインスクリプトはデバウンス実行
スクリプトは各メッセージ後に実行されます(300msのデバウンス)。重い処理(gitコマンドなど)を実行する場合は、結果を5〜10秒間キャッシュするなどの最適化をしてください。スクリプトの実行に時間がかかりすぎるとステータスラインの更新が止まります。

キーバインド設定

Claude Codeのキーバインドは~/.claude/keybindings.jsonで自由にカスタマイズできます。/keybindingsコマンドで設定ファイルを開いて編集するか、直接ファイルを編集してください。

~/.claude/keybindings.json(キーバインド設定例)
{
  "$schema": "https://www.schemastore.org/claude-code-keybindings.json",
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "ctrl+e": "chat:externalEditor",
        "ctrl+k": "chat:clearInput",
        "shift+enter": "chat:newline",
        "ctrl+enter": "chat:submit"
      }
    },
    {
      "context": "Global",
      "bindings": {
        "ctrl+l": "global:clearScreen",
        "ctrl+/": "global:toggleHelp"
      }
    }
  ]
}

キーバインドのコンテキスト一覧

キーバインドは「どの画面にいるか」によって適用されるコンテキストが異なります。

コンテキスト 適用される場面
Global 常に有効(すべての画面)
Chat メインのチャット入力画面
Autocomplete 自動補完メニュー表示中
Settings 設定画面
Confirmation 確認ダイアログ(Allow/Deny等)
Transcript 会話履歴表示中
HistorySearch 履歴検索中
ModelPicker モデル選択画面
DiffDialog diff表示ダイアログ

主要なアクション一覧

アクション デフォルトキー 説明
chat:submit Enter メッセージを送信
chat:newline Shift+Enter 改行(複数行入力)
chat:externalEditor Ctrl+G 外部エディタ($EDITOR)で入力
chat:clearInput Ctrl+U 入力内容をクリア
chat:historyPrev 入力履歴を前へ
chat:historyNext 入力履歴を次へ
global:clearScreen Ctrl+L 画面をクリア
global:interrupt Ctrl+C 処理を中断
global:exit Ctrl+D Claude Codeを終了

複数行入力とターミナル統合設定

デフォルトではEnterキーでメッセージが送信されます。Shift+Enterで改行して複数行入力するには、使用するターミナルに応じた設定が必要です。

ターミナル 対応状況 設定方法
VS Code 設定が必要 /terminal-setupコマンドで自動設定
Alacritty 設定が必要 /terminal-setupコマンドで自動設定
Zed 設定が必要 /terminal-setupコマンドで自動設定
Warp 設定が必要 /terminal-setupコマンドで自動設定
iTerm2 ネイティブ対応 追加設定なしでShift+Enterが使用可能
Kitty ネイティブ対応 追加設定なし
Ghostty ネイティブ対応 追加設定なし
WezTerm ネイティブ対応 追加設定なし
macOS Terminal.app 非対応 バックスラッシュ+Enterで代替入力可能
/terminal-setupで自動設定
# Claude Code上でコマンドを実行
/terminal-setup

# → 使用中のターミナルを自動検出してShift+Enter設定を追加
バックスラッシュ+Enterですべてのターミナルで複数行入力
どのターミナルでも\(バックスラッシュ)+Enterで改行して複数行入力できます。これは設定不要で動作するユニバーサルな方法です。

tmux使用時の設定

tmux内でClaude Codeを使う場合、通知やプログレスバーの表示が正しく機能するためにallow-passthroughオプションが必要です。

~/.tmux.conf(tmux設定)
# エスケープシーケンスのパススルーを許可
set -g allow-passthrough on

# 設定を反映
# tmux source ~/.tmux.conf

Claude Code関連の環境変数一覧

環境変数でClaude Codeの動作を制御できます。~/.bashrc~/.zshrcに追加するか、コマンド実行時に一時的に指定できます。

API認証・接続設定

環境変数 説明
ANTHROPIC_API_KEY Anthropic APIキー。設定するとサブスクリプション認証より優先
ANTHROPIC_AUTH_TOKEN カスタム認証トークン(Bearerプレフィックス自動付与)
ANTHROPIC_BASE_URL APIエンドポイントの上書き(プロキシ・ゲートウェイ用)
ANTHROPIC_CUSTOM_HEADERS カスタムHTTPヘッダー(Name: Value形式、改行区切りで複数指定可)

動作制御の環境変数

環境変数 説明
CLAUDE_CODE_SHELL シェルの自動検出を上書き(例: bashzsh
CLAUDE_CODE_SHELL_PREFIX Bashコマンド実行前に挿入するプレフィックス(ロギング・監査用)
CLAUDE_CODE_TMPDIR 一時ファイルの保存先ディレクトリを上書き
CLAUDE_CODE_DISABLE_AUTO_MEMORY 1に設定するとauto-memoryを無効化
CLAUDE_CODE_DISABLE_TERMINAL_TITLE 1に設定するとターミナルタイトルの自動更新を無効化
CLAUDE_CODE_EFFORT_LEVEL 努力レベルを設定(low/normal/high/max
CLAUDE_CODE_MAX_OUTPUT_TOKENS 最大出力トークン数を上書き
CLAUDE_CODE_SIMPLE 1に設定すると最小システムプロンプト+基本ツールのみで起動
CLAUDE_ENV_FILE Bash実行前にsourceされるシェルスクリプト(conda/virtualenv等の環境維持に使用)

Bashコマンドの制御

環境変数 説明
BASH_DEFAULT_TIMEOUT_MS 長時間実行コマンドのデフォルトタイムアウト(ミリ秒)
BASH_MAX_TIMEOUT_MS モデルが設定できるタイムアウトの上限(ミリ秒)
BASH_MAX_OUTPUT_LENGTH Bash出力の最大文字数(超過した場合は中央部を省略)

クラウドプロバイダ設定

環境変数 説明
CLAUDE_CODE_USE_BEDROCK 1でAWS Bedrockを使用
CLAUDE_CODE_USE_VERTEX 1でGoogle Vertex AIを使用
CLAUDE_CODE_USE_FOUNDRY 1でMicrosoft Azure AI Foundryを使用
AWS_BEARER_TOKEN_BEDROCK AWS Bedrock用APIキー
ANTHROPIC_FOUNDRY_API_KEY Azure AI Foundry用APIキー
環境変数の設定例(~/.zshrc / ~/.bashrc)
# APIキーを設定
export ANTHROPIC_API_KEY="sk-ant-..."

# 日本語で応答させる(settings.jsonでも設定可能)
# export CLAUDE_CODE_LANGUAGE="japanese"

# 一時ファイルを専用ディレクトリに
export CLAUDE_CODE_TMPDIR="/tmp/claude-tmp"

# AWS Bedrockを使用する場合
# export CLAUDE_CODE_USE_BEDROCK=1
# export AWS_REGION="us-east-1"
CLAUDECODEフラグ変数
CLAUDECODEという環境変数はClaude Codeが生成したシェル環境で自動的に1にセットされます。フック・ステータスライン等のスクリプト内でこの変数をチェックすることで、Claude Codeから実行されているかどうかを判定できます。

よくある質問

Qステータスラインスクリプトはどこに保存しますか?

A/statuslineコマンドを使うと自動的に~/.claude/statusline.shに生成されます。手動で設定する場合もこのパスが慣例的に使われますが、settings.jsoncommandフィールドに任意のパスを指定できます。

Qキーバインドをデフォルトに戻すにはどうすればいいですか?

A~/.claude/keybindings.jsonを削除するか、中身を{}(空のオブジェクト)にしてください。Claude Codeを再起動するとデフォルトのキーバインドに戻ります。

QAPIキーは環境変数とsettings.jsonのどちらで管理すべきですか?

AAPIキーは環境変数(ANTHROPIC_API_KEY)での管理を推奨します。settings.jsonはgitリポジトリにコミットされる可能性があるため、APIキーを書くと誤って公開リポジトリに流出するリスクがあります。~/.bashrc~/.zshrc、あるいはパスワードマネージャー経由で設定してください。

QtmuxでClaude Codeを使うと通知が表示されません。

A~/.tmux.confset -g allow-passthrough onを追加して、tmux source ~/.tmux.confで設定を反映してください。これにより、Claude Codeのエスケープシーケンスがtmuxを通過してターミナルに届くようになります。

QCLAUDE_ENV_FILEはどんな場合に使いますか?

APython仮想環境(venv/conda)やNode.jsバージョンマネージャー(nvm)を使っている場合、Claude Codeが実行するBashコマンドでその環境が有効になっていないことがあります。CLAUDE_ENV_FILEに環境をアクティベートするスクリプトのパスを指定すると、各Bash実行前に自動でsourceされ、仮想環境・nvmの設定が維持されます。