Claude Code runs in your terminal. Did you know you can customize its appearance and behavior? Let’s see how to adapt the interface to your preferences.
The Status Line
What is the status line?
The bar at the bottom of the screen that displays:
- Active model
- Tokens used
- Session cost
- Connection status
Customize the status line
Via the /config command:
/config
Status line options:
- Minimal: Just the model
- Standard: Model + tokens
- Detailed: Everything (model, tokens, cost, latency)
- Hidden: No status line
Configuration in settings
{
"statusLine": {
"style": "detailed",
"showCost": true,
"showTokens": true,
"showModel": true,
"showLatency": false
}
}
Vim Mode
Enable vim mode
/vim
Or at launch:
claude --vim
Available vim shortcuts
| Mode | Key | Action |
|---|---|---|
| Normal | i |
Insert mode |
| Normal | v |
Visual mode |
| Normal | dd |
Delete line |
| Normal | yy |
Copy line |
| Normal | p |
Paste |
| Normal | / |
Search |
| Insert | Esc |
Normal mode |
Vim configuration
{
"editor": {
"mode": "vim",
"lineNumbers": true,
"relativNumbers": false
}
}
Themes and Colors
Built-in themes
Claude Code adapts to your terminal theme. To force a theme:
export CLAUDE_CODE_THEME=dark
Options:
dark: Dark backgroundlight: Light backgroundauto: Automatic detection
Custom colors
In your terminal config file (.zshrc, .bashrc):
# Claude Code colors
export CLAUDE_CODE_COLOR_PRIMARY="#00ff00"
export CLAUDE_CODE_COLOR_SECONDARY="#0066ff"
export CLAUDE_CODE_COLOR_ERROR="#ff0000"
export CLAUDE_CODE_COLOR_SUCCESS="#00ff00"
Keyboard Shortcuts
Default shortcuts
| Shortcut | Action |
|---|---|
Enter |
Send message |
Shift+Enter |
New line |
Ctrl+C |
Cancel/Interrupt |
Ctrl+L |
Clear screen |
Esc Esc |
Rewind menu |
Shift+Tab |
Accept Edits mode |
↑ / ↓ |
Prompt history |
Tab |
Autocompletion |
Customize shortcuts
{
"keybindings": {
"submit": "Enter",
"newLine": "Shift+Enter",
"cancel": "Ctrl+C",
"clearScreen": "Ctrl+L",
"rewind": "Esc Esc",
"acceptEdits": "Shift+Tab",
"history.up": "ArrowUp",
"history.down": "ArrowDown"
}
}
Autocompletion
File completion
Type @ then Tab to see available files:
@sr[Tab]
→ @src/
→ @src/api/
→ @src/components/
Command completion
Type / then Tab:
/co[Tab]
→ /compact
→ /config
→ /cost
Smart completion
Claude Code suggests completions based on:
- Current context
- Command history
- Project files
Advanced Terminal Configuration
History size
{
"history": {
"maxSize": 1000,
"saveToDisk": true
}
}
Scroll buffer
{
"terminal": {
"scrollback": 10000,
"wordWrap": true
}
}
Display format
{
"display": {
"codeBlockStyle": "bordered",
"syntaxHighlighting": true,
"lineNumbers": true,
"diffStyle": "unified"
}
}
Shell Integration
Useful aliases
Add to your .zshrc or .bashrc:
# Launch Claude Code
alias cc='claude'
# Claude Code with specific model
alias ccs='claude --model sonnet'
alias cco='claude --model opus'
alias cch='claude --model haiku'
# Continue last session
alias ccr='claude -c'
# Claude Code in print mode
alias ccp='claude -p'
Shell functions
# Analyze a file with Claude
analyze() {
cat "$1" | claude -p "Analyze this file and identify potential issues"
}
# Generate tests for a file
gentest() {
claude -p "Generate tests for @$1" --allowedTools Read,Write
}
# Quick review
review() {
git diff | claude -p "Review these changes"
}
Terminal Multiplexers
With tmux
# Create a Claude Code session
tmux new-session -s claude
# In tmux
claude
# Detach: Ctrl+B, D
# Reattach: tmux attach -t claude
Recommended tmux configuration
# ~/.tmux.conf
# Status bar for Claude Code
set -g status-right '#[fg=green]Claude #[fg=white]| #[fg=cyan]%H:%M'
# Adapted colors
set -g default-terminal "screen-256color"
With screen
screen -S claude
claude
# Detach: Ctrl+A, D
# Reattach: screen -r claude
Notifications
Task completion notifications
{
"notifications": {
"onTaskComplete": true,
"onError": true,
"sound": false
}
}
System notifications
With libnotify (Linux):
claude -p "Long task" && notify-send "Claude finished"
With osascript (macOS):
claude -p "Long task" && osascript -e 'display notification "Claude finished"'
Configuration Profiles
Create profiles
~/.claude/
├── profiles/
│ ├── work.json
│ ├── personal.json
│ └── ci.json
└── settings.json
“work” profile
{
"model": "sonnet",
"statusLine": { "style": "detailed" },
"editor": { "mode": "vim" }
}
“ci” profile
{
"model": "haiku",
"statusLine": { "style": "hidden" },
"notifications": { "enabled": false }
}
Load a profile
claude --profile work
Accessibility
High contrast mode
{
"accessibility": {
"highContrast": true,
"largeText": false,
"screenReaderFriendly": true
}
}
Disable animations
{
"display": {
"animations": false,
"progressIndicator": "text"
}
}
Complete Configuration Template
{
"statusLine": {
"style": "detailed",
"showCost": true,
"showTokens": true,
"showModel": true
},
"editor": {
"mode": "vim",
"lineNumbers": true
},
"display": {
"codeBlockStyle": "bordered",
"syntaxHighlighting": true,
"diffStyle": "unified",
"animations": true
},
"history": {
"maxSize": 1000,
"saveToDisk": true
},
"keybindings": {
"submit": "Enter",
"newLine": "Shift+Enter",
"cancel": "Ctrl+C"
},
"notifications": {
"onTaskComplete": true,
"onError": true
}
}
What’s Coming Tomorrow
In Day 19, we’ll do a comparison: Claude Code vs Cursor vs GitHub Copilot - understand each tool’s strengths.
This article is part of the “Master Claude Code in 20 Days” series. Day 17: Troubleshooting