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 合計コスト(ドル)と処理時間を表示してください # Git情報も一緒に表示 /statusline モデル名・コンテキスト使用率・Gitブランチ名を表示してください
手動でsettings.jsonに設定する
~/.claude/settings.jsonのstatusLineフィールドで直接設定できます。
{
"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 |
ステータスラインスクリプトの実装例
#!/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"
#!/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コマンドで設定ファイルを開いて編集するか、直接ファイルを編集してください。
{
"$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で代替入力可能 |
# Claude Code上でコマンドを実行 /terminal-setup # → 使用中のターミナルを自動検出してShift+Enter設定を追加
どのターミナルでも
\(バックスラッシュ)+Enterで改行して複数行入力できます。これは設定不要で動作するユニバーサルな方法です。tmux使用時の設定
tmux内でClaude Codeを使う場合、通知やプログレスバーの表示が正しく機能するためにallow-passthroughオプションが必要です。
# エスケープシーケンスのパススルーを許可 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 |
シェルの自動検出を上書き(例: bash、zsh) |
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キー |
# 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という環境変数はClaude Codeが生成したシェル環境で自動的に1にセットされます。フック・ステータスライン等のスクリプト内でこの変数をチェックすることで、Claude Codeから実行されているかどうかを判定できます。よくある質問
Qステータスラインスクリプトはどこに保存しますか?
A/statuslineコマンドを使うと自動的に~/.claude/statusline.shに生成されます。手動で設定する場合もこのパスが慣例的に使われますが、settings.jsonのcommandフィールドに任意のパスを指定できます。
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.confにset -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の設定が維持されます。

