Розширені налаштування
Хоча Starship — це універсальна оболонка, іноді для того, щоб змусити її виконувати певні дії, потрібно зробити щось більше, ніж просто відредагувати starship.toml. Ця сторінка містить деякі з найбільш докладних методів налаштувань, які використовуються у starship.
Конфігурації в цьому розділі можуть бути змінені в майбутніх випусках Starship.
TransientPrompt у PowerShell
Можна замінити попередній командний рядок на власний. Це корисно у випадках, коли вся інформація у ньому не завжди потрібна. Щоб увімкнути цю функцію, виконайте команду Enable-TransientPrompt у командному рядку. Щоб зробити цю поведінку постійною, додайте цю команду у ваш $PROFILE. Функцію «Transience» можна вимкнути на льоту за допомогою команди Disable-TransientPrompt`.
Типово, ліва частина вводу буде замінена на >. Щоб налаштувати це, визначте нову функцію з назвою Invoke-Starship-TransientFunction. Наприклад, щоб показати тут модуль Starship character, вам потрібно
function Invoke-Starship-TransientFunction {
&starship module character
}
Invoke-Expression (&starship init powershell)
Enable-TransientPromptTransientPrompt та TransientRightPrompt в Cmd
Clink дозволяє замінювати попередньо надрукований командний рядок іншим рядком. Це корисно у випадках, коли вся інформація у ньому не завжди потрібна. Щоб увімкнути це, виконайте clink set prompt.transient <value>, де <value> може бути одним з:
always: завжди замінює попередній командний рядокsame_dir: замінює попередній командний рядок тільки якщо робоча тека не змінюваласьoff: не змінює командний рядок (тобто функцію вимкнено)
Це треба зробити лише один раз. Зробіть наступні зміни у starship.lua, щоб налаштувати, що показується ліворуч і праворуч:
- Типово, ліва частина вводу буде замінена на
>. Щоб кастомізувати її, створіть нову функцію з назвоюstarship_transient_prompt_func. Ця функція отримує поточний текст командного рядка, з яким ви зможете працювати. Наприклад, щоб показати тут модуль Starshipcharacter, вам потрібно
function starship_transient_prompt_func(prompt)
return io.popen("starship module character"
.." --keymap="..rl.getvariable('keymap')
):read("*a")
end
load(io.popen('starship init cmd'):read("*a"))()- Типово, права частина вводу є порожньою. Щоб кастомізувати її, створіть нову функцію з назвою
starship_transient_rprompt_func. Ця функція отримує поточний текст командного рядка, з яким ви зможете працювати. Наприклад, щоб показати час, коли була запущена остання команда, ви можете зробити
function starship_transient_rprompt_func(prompt)
return io.popen("starship module time"):read("*a")
end
load(io.popen('starship init cmd'):read("*a"))()TransientPrompt та TransientRightPrompt у Fish
Можна замінити попередній командний рядок на власний. Це корисно у випадках, коли вся інформація у ньому не завжди потрібна. Щоб увімкнути це, запустіть enable_transience в оболонці. Щоб зробити цю змінну постійною, додайте цей вираз до ваших налаштувань ~/.config/fish/config.fish. Функцію «Transience» можна вимкнути на льоту за допомогою команди disable_transience.
Зверніть увагу, що у випадку Fish, перехідний командний рядок буде надруковано лише тоді, коли командний рядок не порожній та синтаксично правильний.
- Типово, ліва частина вводу буде замінена на зелений символ
❯. Щоб кастомізувати її, створіть нову функцію з назвоюstarship_transient_prompt_func. Наприклад, щоб показати тут модуль Starshipcharacter, вам потрібно
function starship_transient_prompt_func
starship module character
end
starship init fish | source
enable_transience- Типово, права частина вводу є порожньою. Щоб кастомізувати її, створіть нову функцію з назвою
starship_transient_rprompt_func. Наприклад, щоб показати час, коли була запущена остання команда, ви можете зробити
function starship_transient_rprompt_func
starship module time
end
starship init fish | source
enable_transienceTransientPrompt та TransientRightPrompt в Bash
Ble.sh v0.4 або вище дозволяє замінювати попередньо надрукований командний рядок іншим рядком. Це корисно у випадках, коли вся інформація з командного рядка не потрібна. Для увімкнення цього додайте до ~/.bashrc рядок bleopt prompt_ps1_transient=<value>:
<value> тут — це розділений двокрапкою список always, same-dir та trim. Якщо prompt_ps1_final порожній, а параметр prompt_ps1_transient містить непусте значення <value>, то командний рядок, задана параметром PS1, стирається при виході з поточного командного рядка. Якщо <value> містить поле trim, зберігається лише останній рядок багаторядкового PS1, а решта рядків видаляються. В іншому випадку командний рядок буде встановлено перестворено, якщо вказано PS1=. Коли поле same-dir міститься у <value> та поточна тека є відмінною від останньої теки у попередньому виводі командного рядка, параметр prompt_ps1_transient не враховується.
Зробіть наступні зміни у ~/.blerc (або у ~/.config/blesh/init.sh), щоб налаштувати, що показується ліворуч і праворуч:
- Для налаштування того, чим замінюється ліва частина вводу, налаштуйте параметр
prompt_ps1_finalдля Ble.sh. Наприклад, щоб показати тут модуль Starshipcharacter, вам потрібно
bleopt prompt_ps1_final='$(starship module character)'- Для налаштування того, чим замінюється права частина вводу, налаштуйте параметр
prompt_rps1_final. Наприклад, щоб показати час, коли була запущена остання команда, ви можете зробити
bleopt prompt_rps1_final='$(starship module time)'Власні команди pre-prompt та pre-execution в Cmd
Clink забезпечує надзвичайно гнучкий API для виконання команд pre-prompt і pre-exec в Cmd. Його досить просто використовувати в Starship. Зробіть наступні зміни у вашому starship.lua відповідно до ваших вимог:
- Для запуску власних функцій прямо перед виводом командного рядка, визначте нову функцію з назвою
starship_preprompt_user_func. Ця функція отримує поточний текст командного рядка, з яким ви зможете працювати. Наприклад, щоб показати ракету перед командним рядком, ви можете зробити наступне
function starship_preprompt_user_func(prompt)
print("🚀")
end
load(io.popen('starship init cmd'):read("*a"))()- Для запуску власних функцій прямо перед виконанням команди, визначте нову функцію з назвою
starship_precmd_user_func. Ця функція отримує поточний текст команди, з яким ви зможете працювати. Наприклад, для виводу команди, яка буде виконана, вам треба зробити
function starship_precmd_user_func(line)
print("Executing: "..line)
end
load(io.popen('starship init cmd'):read("*a"))()Власні команди pre-prompt та pre-execution в Bash
Bash не має офіційної системи preexec/precmd, як більшість інших оболонок. Через це важко забезпечити повністю настроювані гачки для цього в bash. Однак, Starship дає можливість вставити свої власні функції в процедуру виводу командного рядка:
- Для запуску власних функцій прямо перед виводом командного рядка, визначте нову функцію з назвою
starship_precmd_user_func. Наприклад, щоб показати ракету перед командним рядком, ви можете зробити наступне
function blastoff(){
echo "🚀"
}
starship_precmd_user_func="blastoff"- Щоб запустити власну функцію безпосередньо перед виконанням команди, можна скористатися механізмом перехоплення [
DEBUG]. Однак, ви повинні перехопити сигнал DEBUG перед ініціалізацією Starship! Starship може зберегти значення перехоплення DEBUG, але якщо перехоплення буде перезаписане після початку запуску, деякі функції не працюватимуть.
function blastoff(){
echo "🚀"
}
trap blastoff DEBUG # Trap DEBUG *before* running starship
set -o functrace
eval $(starship init bash)
set +o functraceВласні команди pre-prompt та pre-execution в PowerShell
PowerShell не має офіційної системи preexec/precmd, як більшість інших оболонок. Через це важко забезпечити повністю настроювані гачки для цього в powershell. Однак, Starship дає можливість вставити свої власні функції в процедуру виводу командного рядка:
Створіть функцію з назвою Invoke-Starship-PreCommand
function Invoke-Starship-PreCommand {
$host.ui.Write("🚀")
}Зміна заголовка вікна
В деяких оболонках командний рядок автоматично змінює заголовок вікна (наприклад, на назву поточної теки). У Fish це стандартна поведінка. Starship цього не робить, але це досить просто зробити у bash, zsh, cmd або powershell.
Спочатку визначте функцію зміни заголовка вікна (в bash і zsh – однаково):
function set_win_title(){
echo -ne "\033]0; YOUR_WINDOW_TITLE_HERE \007"
}Ви можете використовувати змінні для налаштування цього заголовка ($USER, $HOSTNAME, та $PWD – є досить популярними).
У bash встановіть цю функцію як функцію precmd у starship:
starship_precmd_user_func="set_win_title"У zsh додайте наступне до масиву precmd_functions:
precmd_functions+=(set_win_title)Якщо вам подобається результат, додайте ці рядки до файлу налаштування оболонки (~/.bashrc чи ~/.zshrc), щоб зробити його постійним.
Наприклад, якщо ви хочете показати вашу поточну теку у заголовку вкладці термінала, додайте наступний сніпет до вашого ~/.bashrc або ~/.zshrc:
function set_win_title(){
echo -ne "\033]0; $(basename "$PWD") \007"
}
starship_precmd_user_func="set_win_title"Для Cmd, ви можете змінити заголовок вікна за допомогою функції starship_preprompt_user_func.
function starship_preprompt_user_func(prompt)
console.settitle(os.getenv('USERNAME').."@"..os.getenv('COMPUTERNAME')..": "..os.getcwd())
end
load(io.popen('starship init cmd'):read("*a"))()Ви також можете встановити подібний вивід у PowerShell, створивши функцію з назвою Invoke-Starship-PreCommand.
# редагування $PROFILE
function Invoke-Starship-PreCommand {
$host.ui.RawUI.WindowTitle = "$env:USERNAME@$env:COMPUTERNAME`: $pwd `a"
}
Invoke-Expression (&starship init powershell)Командний рядок праворуч
Деякі оболонки підтримують вивід командного рядка праворуч. Starship може встановити вміст правої частини командного рядка за допомогою параметра right_format. Будь-який модуль, який можна використовувати у format, також підтримується у right_format. Змінна $all міститиме лише модулі, які явно не використовується, а ні в format, а ні в right_format.
Примітка: командний рядок праворуч – це один рядок, що знаходиться праворуч у рядку вводу. Щоб вирівняти модулі праворуч над рядком введення в багаторядковому запиті, перегляньте модуль fill.
right_format наразі підтримується для таких оболонок: elvish, fish, zsh, xonsh, cmd, nushell, bash.
Примітка: фреймворк Ble.sh v0.4 або вище має бути встановлений для того, щоб використовувати розташування командного рядка в bash праворуч.
Приклад
# ~/.config/starship.toml
# Мінімум ліворуч
format = """$character"""
# решту командного рядка перенесемо праворуч
right_format = """$all"""Отримаємо командний рядок наступного виду:
▶ starship on rprompt [!] is 📦 v0.57.0 via 🦀 v1.54.0 took 17sПри використанні zsh (версія 5.0.5 і вище) оболонка стандартно додає пробіл у кінці правого боку командного рядка. Це може спричинити проблеми з вирівнюванням, зокрема під час використання модуля Starship $fill. Щоб видалити цей проміжок, додайте наступне до вашого .zshrc:
ZLE_RPROMPT_INDENT=0Подовжений ввід
Деякі оболонки підтримують подовження вводу так само як і звичайний ввід в командний рядок. Такий ввід буде показаний замість звичайного, колі користувач ввів символ продовження вводу (наприклад одну ліву дужку чи лапку).
У Starship можна встановити показ продовженого вводу за допомогою параметра continuation_prompt. Стандартний командний рядок — '[∙](bright-black) '.
Примітка: continuation_prompt слід встановити на літеральний рядок без жодних змінних.
Примітка: Подовжений ввід доступний лише для наступних оболонок:
bashzshPowerShell
Рядок стану для Claude Code
# ~/.config/starship.toml
# Подовжений ввід позначається двома стрілками
continuation_prompt = '▶▶ 'Рядок стану для Claude Code
Starship підтримує показ власного рядка стану під час роботи в Claude Code — інструменті командного рядка від Anthropic, призначеному для інтерактивного програмування за допомогою Claude. Ця рядок стану надає інформацію в режимі реального часу про вашу сесію Claude, зокрема про використовувану модель, використання вікна контексту та вартість сесії.
Щоб використовувати Starship як рядок стану Claude Code:
Встановлення
Щоб використовувати Starship як рядок стану Claude Code:
- Налаштуйте вигляд рядка стану у файлі
~/.config/starship.toml(див. розділ Налаштування нижче)
{
"statusLine": {
"type": "command",
"command": "starship statusline claude-code"
}
}- Налаштуйте вигляд рядка стану у файлі
~/.config/starship.toml(див. розділ Налаштування нижче)
Огляд
При запуску з параметром starship statusline claude-code Starship отримує дані сеансу Claude Code через стандартний ввід (stdin) і показує рядок стану, використовуючи спеціальний профіль з назвою claude-code.
Типовий формат профілю:
claude_model: Показує поточну модель, яка використовується в Claudeclaude_context: Показує використання контекстного вікна за допомогою візуального індикатораclaude_cost: Показує вартість сеансу та статистичні дані
Типовий формат профілю:
[profiles]
claude-code = "$claude_model$git_branch$claude_context$claude_cost"Налаштування
Ви можете налаштувати рядок стану коду Claude Code змінивши профіль claude-code і окремі конфігурації модулів в ~/.config/starship.toml:
# ~/.config/starship.toml
# Customize the claude-code profile
[profiles]
claude-code = "$claude_model$claude_context$claude_cost"
# Configure individual modules
[claude_model]
format = "[$symbol$model]($style) "
symbol = "🤖 "
style = "bold blue"
[claude_context]
format = "[$gauge $percentage]($style) "
gauge_width = 10
[claude_cost]
format = "[$symbol$cost]($style) "
symbol = "💰 "Claude Model
Модуль claude_model показує поточну модель Claude, яка використовується в сесії.
Змінні
| Змінна | Приклад | Опис |
|---|---|---|
format | '[$symbol$model]($style) ' | Імʼя поточної моделі |
символ | '🤖 ' | ID моделі |
style | 'bold blue' | Віддзеркалює значення параметра symbol |
model_aliases | {} | Звʼязує ідентифікатори моделей або їхні назви з коротшими псевдонімами. Спочатку перевіряється ідентифікатор, потім назва. |
disabled | false | Вимикає модуль claude_model. |
Змінні
| Змінна | Приклад | Опис |
|---|---|---|
| model | Claude 3.5 Sonnet | Імʼя поточної моделі |
| model_id | claude-3-5-sonnet | ID моделі |
| symbol | Віддзеркалює значення параметра style | |
| style* | Віддзеркалює значення параметра style |
*: Ця змінна може бути використана лише як частина стилю рядка
Приклади
# ~/.config/starship.toml
# Базові налаштування
[claude_model]
format = "on [$symbol$model]($style) "
symbol = "🧠 "
style = "bold cyan"
# Використання псевдонімів для моделей із власними назвами постачальників
# Аліаси можна створити за ідентифікатором моделі або за її назвою
[claude_model.model_aliases]
# Аліас за ID моделі від постачальника (напр. AWS Bedrock)
"global.anthropic.claude-sonnet-4-5-20250929-v1:0" = "Sonnet 4.5"
# Аліас за назвою
"Claude Sonnet 4.5 (Vendor Proxy)" = "Sonnet"Claude Context
Модуль claude_context показує використання контекстного вікна у вигляді відсотка і візуального індикатора. Стиль автоматично змінюється на основі налаштованих порогів.
Параметри
| Параметр | Стандартно | Опис |
|---|---|---|
format | '[$gauge $percentage]($style) ' | Формат модуля. |
символ | '' | Символ, який показується перед індикатором. |
gauge_width | 5 | Ширина індикатора в символах. |
gauge_full_symbol | '█' | Символ, який використовується для заповнених сегментів індикатора. |
gauge_partial_symbol | '▒' | Символ, який використовується для частково заповнених сегментів індикатора. |
gauge_empty_symbol | '░' | Символ, який використовується для не заповнених сегментів індикатора. |
display | див нижче | Налаштування порогів та стилів. |
disabled | false | Вимикає модуль claude_context. |
Display
Параметр display — це масив об’єктів, які визначають порогові значення та стилі для різних рівнів використання. Модуль використовує стиль із найвищим порогом відповідності або приховує модуль, якщо hidden має значення true.
| Параметр | Стандартно | Опис |
|---|---|---|
threshold | 0.0 | Мінімальний відсоток використання контекстних вікон, що відповідає цій конфігурації |
style | bold green | Значення style, якщо ця конфігурація візуалізації має збіг |
hidden | false | Приховати цей модуль, якщо він збігається з конфігурацією. |
[[claude_context.display]]
threshold = 0
hidden = true
[[claude_context.display]]
threshold = 30
style = "bold green"
[[claude_context.display]]
threshold = 60
style = "bold yellow"
[[claude_context.display]]
threshold = 80
style = "bold red"Змінні
| Змінна | Приклад | Опис |
|---|---|---|
| gauge | ██▒░░ | Візуальне представлення використання контексту |
| percentage | 65% | Використання контексту у відсотках |
| input_tokens | 45.2k | Загальна кількість input-токенів, використаних у розмові |
| output_tokens | 12.3k | Загальна кількість output-токенів, використаних у розмові |
| curr_input_tokens | 5.1k | Кількість input-токенів в останньому API-виклику |
| curr_output_tokens | 1.2k | Кількість output-токенів в останньому API-виклику |
| curr_cache_creation_tokens | 1.5k | Кеш з токенів створення з останнього виклику API |
| curr_cache_read_tokens | 23.4k | Кеш з токенів читання з останнього виклику API |
| total_tokens | 200k | Загальний розмір контекстного вікна |
| symbol | Віддзеркалює значення параметра style | |
| style* | Повторює стиль, що збігається з відповідним пороговим значення для показу |
Тільки індикатор
Приклади
Докладні відомості про використання токенів
# ~/.config/starship.toml
[claude_context]
format = "[$gauge]($style) "
gauge_width = 10Власні символи для індикатора
# ~/.config/starship.toml
[claude_context]
format = "[$percentage ($input_tokens in / $output_tokens out)]($style) "Власні порогові значення
# ~/.config/starship.toml
[claude_context]
gauge_full_symbol = "▰"
gauge_partial_symbol = ""
gauge_empty_symbol = "▱"
gauge_width = 10
format = "[$gauge]($style) "Власні порогові значення
# ~/.config/starship.toml
[[claude_context.display]]
threshold = 0
style = "bold green"
[[claude_context.display]]
threshold = 50
style = "bold yellow"
[[claude_context.display]]
threshold = 75
style = "bold orange"
[[claude_context.display]]
threshold = 90
style = "bold red"Claude Cost
Модуль claude_cost показує загальну вартість поточної сесії Claude Code в доларах США. Як і claude_context, він підтримує стилізацію на основі порогових значень.
Параметри
| Параметр | Стандартно | Опис |
|---|---|---|
format | '[$symbol(\\$$cost)]($style) ' | Формат модуля. |
символ | '💰 ' | Символ, який показується перед сумою витрат. |
display | див нижче | Налаштування порогів та стилів. |
disabled | false | Вимикає модуль claude_cost. |
Display
Параметр display — це масив об\єктів, які визначають порогові значення та стилі для порогових значень витрат. Модуль використовує стиль із найвищим порогом відповідності або приховує модуль, якщо hidden має значення true.
| Параметр | Стандартно | Опис |
|---|---|---|
threshold | 0.0 | Мінімальна вартість у доларах США для такої конфігурації |
style | bold green | Значення style, якщо ця конфігурація візуалізації має збіг |
hidden | false | Приховати цей модуль, якщо він збігається з конфігурацією. |
Стандартні налаштування:
[[claude_cost.display]]
threshold = 0.0
hidden = true
[[claude_cost.display]]
threshold = 1.0
style = "bold yellow"
[[claude_cost.display]]
threshold = 5.0
style = "bold red"Змінні
| Змінна | Приклад | Опис |
|---|---|---|
| cost | 1.23 | Загальна вартість сесії у доларах (з центами) |
| duration | 1m 30s | Загальна тривалість сеансу |
| api_duration | 45s | Загальна тривалість API-виклику |
| lines_added | 1.2k | Загальна кількість доданих рядків коду |
| lines_removed | 500 | Загальна кількість вилучених рядків коду |
| symbol | Віддзеркалює значення параметра style | |
| style* | Повторює стиль, що збігається з відповідним пороговим значення для показу |
*: Ця змінна може бути використана лише як частина стилю рядка
Рядки стилів
# ~/.config/starship.toml
# Витрати зі статистикою змін у коді
[claude_cost]
format = "[$symbol$cost (+$lines_added -$lines_removed)]($style) "
# Приховати модуль, доки вартість не перевищить $0,10
[[claude_cost.display]]
threshold = 0.0
hidden = true
[[claude_cost.display]]
threshold = 0.10
style = "bold yellow"
[[claude_cost.display]]
threshold = 2.0
style = "bold red"
# Показувати інформацію про тривалість роботи
[claude_cost]
format = "[$symbol$cost ($duration)]($style) "Рядки стилів
Рядки стилю — список слів, розділених пробілами. Слова не чутливі до регістру (наприклад bold і BoLd вважаються однаковими). Кожне слово може бути одним з наступних:
bolditalicunderlinedimmedinvertedblinkhiddenstrikethroughbg:<color>fg:<color><color>none
де <color> є специфікацією кольору (обговорюється нижче). fg:<color> та <color> на цей час роблять те саме, хоча це може змінитися в майбутньому. <color> може також мати значення prev_fg або prev_bg, які обчислюють колір тексту або фону попереднього елемента відповідно, якщо він доступний, або none у протилежному випадку. inverted замінює кольори тла і тексту. Порядок слів у рядку не має значення.
Токен none перевизначає всі інші токени у рядку, якщо він не є частиною bg:, так fg:red none fg:blue все одно створить рядок без стилізування. bg:none встановлює типовий колір фону, таким чином, fg:red bg:none еквівалентно red або fg:red, а bg:green fg:red fg:none також еквівалентно fg:red або red. Використання none у поєднанні з іншими токенами в майбутньому може стати помилкою.
Якщо для тексту та фону задано кілька кольорів, останній в рядку буде мати вищий пріоритет.
- Один із стандартних кольорів терміналу:
black,red,green,blue,yellow,purple,cyan,white. Ви можете опціонально додавати префіксbright-, щоб отримати яскраву версію (наприклад,bright-white). - Символ
#за яким йде шестизначний шістнадцятковий код кольору. Тут вказується шестнадцятковий код кольору RGB. - Число від 0-255. Це визначає 8-бітний код кольору ANSI.
Якщо для тексту та фону задано кілька кольорів, останній в рядку буде мати вищий пріоритет.
Не кожен рядок стилю буде правильно показуватись у кожному терміналі. Зокрема, існують такі відомі примхи:
- Багато терміналів стандартно вмикають підтримку
blink. hiddenне підтримується в iTerm.strikethroughне підтримується стандартно в macOS Terminal.app.