Skip to content

Розширені налаштування ​

Хоча Starship — це універсальна оболонка, іноді для того, щоб змусити її виконувати певні дії, потрібно зробити щось більше, ніж просто відредагувати starship.toml. Ця сторінка містить деякі з найбільш докладних методів налаштувань, які використовуються у starship.

Конфігурації в цьому розділі можуть бути змінені в майбутніх випусках Starship.

TransientPrompt у PowerShell ​

Можна замінити попередній командний рядок на власний. Це корисно у випадках, коли вся інформація у ньому не завжди потрібна. Щоб увімкнути цю функцію, виконайте команду Enable-TransientPrompt у командному рядку. Щоб зробити цю поведінку постійною, додайте цю команду у ваш $PROFILE. Функцію «Transience» можна вимкнути на льоту за допомогою команди Disable-TransientPrompt`.

Типово, ліва частина вводу буде замінена на >. Щоб налаштувати це, визначте нову функцію з назвою Invoke-Starship-TransientFunction. Наприклад, щоб показати тут модуль Starship character, вам потрібно

powershell
function Invoke-Starship-TransientFunction {
  &starship module character
}

Invoke-Expression (&starship init powershell)

Enable-TransientPrompt

TransientPrompt та TransientRightPrompt в Cmd ​

Clink дозволяє замінювати попередньо надрукований командний рядок іншим рядком. Це корисно у випадках, коли вся інформація у ньому не завжди потрібна. Щоб увімкнути це, виконайте clink set prompt.transient <value>, де <value> може бути одним з:

  • always: завжди замінює попередній командний рядок
  • same_dir: замінює попередній командний рядок тільки якщо робоча тека не змінювалась
  • off: не змінює командний рядок (тобто функцію вимкнено)

Це треба зробити лише один раз. Зробіть наступні зміни у starship.lua, щоб налаштувати, що показується ліворуч і праворуч:

  • Типово, ліва частина вводу буде замінена на >. Щоб кастомізувати її, створіть нову функцію з назвою starship_transient_prompt_func. Ця функція отримує поточний текст командного рядка, з яким ви зможете працювати. Наприклад, щоб показати тут модуль Starship character, вам потрібно
lua
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. Ця функція отримує поточний текст командного рядка, з яким ви зможете працювати. Наприклад, щоб показати час, коли була запущена остання команда, ви можете зробити
lua
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. Наприклад, щоб показати тут модуль Starship character, вам потрібно
fish
function starship_transient_prompt_func
  starship module character
end
starship init fish | source
enable_transience
  • Типово, права частина вводу є порожньою. Щоб кастомізувати її, створіть нову функцію з назвою starship_transient_rprompt_func. Наприклад, щоб показати час, коли була запущена остання команда, ви можете зробити
fish
function starship_transient_rprompt_func
  starship module time
end
starship init fish | source
enable_transience

TransientPrompt та 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. Наприклад, щоб показати тут модуль Starship character, вам потрібно
bash
bleopt prompt_ps1_final='$(starship module character)'
  • Для налаштування того, чим замінюється права частина вводу, налаштуйте параметр prompt_rps1_final. Наприклад, щоб показати час, коли була запущена остання команда, ви можете зробити
bash
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. Ця функція отримує поточний текст командного рядка, з яким ви зможете працювати. Наприклад, щоб показати ракету перед командним рядком, ви можете зробити наступне
lua
function starship_preprompt_user_func(prompt)
  print("🚀")
end

load(io.popen('starship init cmd'):read("*a"))()
  • Для запуску власних функцій прямо перед виконанням команди, визначте нову функцію з назвою starship_precmd_user_func. Ця функція отримує поточний текст команди, з яким ви зможете працювати. Наприклад, для виводу команди, яка буде виконана, вам треба зробити
lua
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. Наприклад, щоб показати ракету перед командним рядком, ви можете зробити наступне
bash
function blastoff(){
    echo "🚀"
}
starship_precmd_user_func="blastoff"
  • Щоб запустити власну функцію безпосередньо перед виконанням команди, можна скористатися механізмом перехоплення [DEBUG]. Однак, ви повинні перехопити сигнал DEBUG перед ініціалізацією Starship! Starship може зберегти значення перехоплення DEBUG, але якщо перехоплення буде перезаписане після початку запуску, деякі функції не працюватимуть.
bash
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

powershell
function Invoke-Starship-PreCommand {
    $host.ui.Write("🚀")
}

Зміна заголовка вікна ​

В деяких оболонках командний рядок автоматично змінює заголовок вікна (наприклад, на назву поточної теки). У Fish це стандартна поведінка. Starship цього не робить, але це досить просто зробити у bash, zsh, cmd або powershell.

Спочатку визначте функцію зміни заголовка вікна (в bash і zsh – однаково):

bash
function set_win_title(){
    echo -ne "\033]0; YOUR_WINDOW_TITLE_HERE \007"
}

Ви можете використовувати змінні для налаштування цього заголовка ($USER, $HOSTNAME, та $PWD – є досить популярними).

У bash встановіть цю функцію як функцію precmd у starship:

bash
starship_precmd_user_func="set_win_title"

У zsh додайте наступне до масиву precmd_functions:

bash
precmd_functions+=(set_win_title)

Якщо вам подобається результат, додайте ці рядки до файлу налаштування оболонки (~/.bashrc чи ~/.zshrc), щоб зробити його постійним.

Наприклад, якщо ви хочете показати вашу поточну теку у заголовку вкладці термінала, додайте наступний сніпет до вашого ~/.bashrc або ~/.zshrc:

bash
function set_win_title(){
    echo -ne "\033]0; $(basename "$PWD") \007"
}
starship_precmd_user_func="set_win_title"

Для Cmd, ви можете змінити заголовок вікна за допомогою функції starship_preprompt_user_func.

lua
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.

powershell
# редагування $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 праворуч.

Приклад ​

toml
# ~/.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:

zsh
ZLE_RPROMPT_INDENT=0

Подовжений ввід ​

Деякі оболонки підтримують подовження вводу так само як і звичайний ввід в командний рядок. Такий ввід буде показаний замість звичайного, колі користувач ввів символ продовження вводу (наприклад одну ліву дужку чи лапку).

У Starship можна встановити показ продовженого вводу за допомогою параметра continuation_prompt. Стандартний командний рядок — '[∙](bright-black) '.

Примітка: continuation_prompt слід встановити на літеральний рядок без жодних змінних.

Примітка: Подовжений ввід доступний лише для наступних оболонок:

  • bash
  • zsh
  • PowerShell

Рядок стану для Claude Code ​

toml
# ~/.config/starship.toml

# Подовжений ввід позначається двома стрілками
continuation_prompt = '▶▶ '

Рядок стану для Claude Code ​

Starship підтримує показ власного рядка стану під час роботи в Claude Code — інструменті командного рядка від Anthropic, призначеному для інтерактивного програмування за допомогою Claude. Ця рядок стану надає інформацію в режимі реального часу про вашу сесію Claude, зокрема про використовувану модель, використання вікна контексту та вартість сесії.

Щоб використовувати Starship як рядок стану Claude Code:

Встановлення ​

Щоб використовувати Starship як рядок стану Claude Code:

  1. Налаштуйте вигляд рядка стану у файлі ~/.config/starship.toml (див. розділ Налаштування нижче)
json
{
  "statusLine": {
    "type": "command",
    "command": "starship statusline claude-code"
  }
}
  1. Налаштуйте вигляд рядка стану у файлі ~/.config/starship.toml (див. розділ Налаштування нижче)

Огляд ​

При запуску з параметром starship statusline claude-code Starship отримує дані сеансу Claude Code через стандартний ввід (stdin) і показує рядок стану, використовуючи спеціальний профіль з назвою claude-code.

Типовий формат профілю:

  • claude_model: Показує поточну модель, яка використовується в Claude
  • claude_context: Показує використання контекстного вікна за допомогою візуального індикатора
  • claude_cost: Показує вартість сеансу та статистичні дані

Типовий формат профілю:

toml
[profiles]
claude-code = "$claude_model$git_branch$claude_context$claude_cost"

Налаштування ​

Ви можете налаштувати рядок стану коду Claude Code змінивши профіль claude-code і окремі конфігурації модулів в ~/.config/starship.toml:

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{}Звʼязує ідентифікатори моделей або їхні назви з коротшими псевдонімами. Спочатку перевіряється ідентифікатор, потім назва.
disabledfalseВимикає модуль claude_model.

Змінні ​

ЗміннаПрикладОпис
modelClaude 3.5 SonnetІмʼя поточної моделі
model_idclaude-3-5-sonnetID моделі
symbolВіддзеркалює значення параметра style
style*Віддзеркалює значення параметра style

*: Ця змінна може бути використана лише як частина стилю рядка

Приклади ​

toml
# ~/.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_width5Ширина індикатора в символах.
gauge_full_symbol'█'Символ, який використовується для заповнених сегментів індикатора.
gauge_partial_symbol'▒'Символ, який використовується для частково заповнених сегментів індикатора.
gauge_empty_symbol'░'Символ, який використовується для не заповнених сегментів індикатора.
displayдив нижчеНалаштування порогів та стилів.
disabledfalseВимикає модуль claude_context.
Display ​

Параметр display — це масив об’єктів, які визначають порогові значення та стилі для різних рівнів використання. Модуль використовує стиль із найвищим порогом відповідності або приховує модуль, якщо hidden має значення true.

ПараметрСтандартноОпис
threshold0.0Мінімальний відсоток використання контекстних вікон, що відповідає цій конфігурації
stylebold greenЗначення style, якщо ця конфігурація візуалізації має збіг
hiddenfalseПриховати цей модуль, якщо він збігається з конфігурацією.
toml
[[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██▒░░Візуальне представлення використання контексту
percentage65%Використання контексту у відсотках
input_tokens45.2kЗагальна кількість input-токенів, використаних у розмові
output_tokens12.3kЗагальна кількість output-токенів, використаних у розмові
curr_input_tokens5.1kКількість input-токенів в останньому API-виклику
curr_output_tokens1.2kКількість output-токенів в останньому API-виклику
curr_cache_creation_tokens1.5kКеш з токенів створення з останнього виклику API
curr_cache_read_tokens23.4kКеш з токенів читання з останнього виклику API
total_tokens200kЗагальний розмір контекстного вікна
symbolВіддзеркалює значення параметра style
style*Повторює стиль, що збігається з відповідним пороговим значення для показу

Тільки індикатор

Приклади ​

Докладні відомості про використання токенів

toml
# ~/.config/starship.toml

[claude_context]
format = "[$gauge]($style) "
gauge_width = 10

Власні символи для індикатора

toml
# ~/.config/starship.toml

[claude_context]
format = "[$percentage ($input_tokens in / $output_tokens out)]($style) "

Власні порогові значення

toml
# ~/.config/starship.toml

[claude_context]
gauge_full_symbol = "▰"
gauge_partial_symbol = ""
gauge_empty_symbol = "▱"
gauge_width = 10
format = "[$gauge]($style) "

Власні порогові значення

toml
# ~/.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див нижчеНалаштування порогів та стилів.
disabledfalseВимикає модуль claude_cost.
Display ​

Параметр display — це масив об\єктів, які визначають порогові значення та стилі для порогових значень витрат. Модуль використовує стиль із найвищим порогом відповідності або приховує модуль, якщо hidden має значення true.

ПараметрСтандартноОпис
threshold0.0Мінімальна вартість у доларах США для такої конфігурації
stylebold greenЗначення style, якщо ця конфігурація візуалізації має збіг
hiddenfalseПриховати цей модуль, якщо він збігається з конфігурацією.

Стандартні налаштування:

toml
[[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"

Змінні ​

ЗміннаПрикладОпис
cost1.23Загальна вартість сесії у доларах (з центами)
duration1m 30sЗагальна тривалість сеансу
api_duration45sЗагальна тривалість API-виклику
lines_added1.2kЗагальна кількість доданих рядків коду
lines_removed500Загальна кількість вилучених рядків коду
symbolВіддзеркалює значення параметра style
style*Повторює стиль, що збігається з відповідним пороговим значення для показу

*: Ця змінна може бути використана лише як частина стилю рядка

Рядки стилів ​

toml
# ~/.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 вважаються однаковими). Кожне слово може бути одним з наступних:

  • bold
  • italic
  • underline
  • dimmed
  • inverted
  • blink
  • hidden
  • strikethrough
  • bg:<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.