docs/uk-UA/advanced-config/README.md
Хоча Starship і універсальна оболонка, іноді необхідно зробити більше ніж просто змінити star.toml, щоб можна було робити певні речі. Ця сторінка містить деякі з найбільш докладних методів налаштувань, які використовуються у starship.
[!WARNING] Конфігурації в цьому розділі можуть бути змінені в майбутніх випусках Starship.
Можна замінити попередній командний рядок на власний. Це корисно у випадках, коли вся інформація у ньому не завжди потрібна. Щоб увімкнути це, запустіть Enable-TransientPrompt в сеансі оболонки. Щоб зробити цю поведінку постійною, додайте цю команду у ваш $PROFILE. Перехідність можна вимкнути на льоту за допомогою Disable-TransientPrompt.
Типово, ліва частина вводу буде замінена на >. Щоб налаштувати це, створіть нову функцію з назвою Invoke-Starship-TransientFunction. Наприклад, щоб показати тут модуль Starship character, вам потрібно
function Invoke-Starship-TransientFunction {
&starship module character
}
Invoke-Expression (&starship init powershell)
Enable-TransientPrompt
Clink дозволяє замінювати попередньо надрукований командний рядок іншим рядком. Це корисно у випадках, коли вся інформація з командного рядка не потрібна. Щоб увімкнути це, виконайте clink set prompt.transient <value>, де <value> може бути одним з:
always: завжди замінює попередній командний рядокsame_dir: замінює попередній командний рядок тільки якщо робоча тека не змінюваласьoff: не змінює командний рядок (тобто функцію вимкнено)Це треба зробити лише один раз. Зробіть наступні зміни у starship.lua, щоб налаштувати, що показується ліворуч і праворуч:
>. Щоб налаштувати це, створіть нову функцію з назвою starship_transient_prompt_func. Ця функція отримує поточний текст командного рядка, з яким ви зможете працювати. Наприклад, щоб показати тут модуль Starship character, вам потрібно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"))()
Можна замінити попередньо надрукований командний рядок на власний. Це корисно у випадках, коли вся інформація з командного рядка не потрібна. Щоб увімкнути це, запустіть enable_transience в сеансі оболонки. Щоб зробити цю змінну постійною, додайте цей вираз до ваших налаштувань ~/.config/fish/config.fish. Перехідність може бути вимкнена за допомогою disable_transience.
Зверніть увагу, що у випадку Fish, перехідний командний рядок буде надруковано лише тоді, коли командний рядок не порожній та синтаксично правильний.
❯. Щоб кастомізувати її, створіть нову функцію з назвою starship_transient_prompt_func. Наприклад, щоб показати тут модуль Starship character, вам потрібно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_transience
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. Наприклад, щоб показати тут модуль Starship character, вам потрібноbleopt prompt_ps1_final='$(starship module character)'
prompt_rps1_final. Наприклад, щоб показати час, коли була запущена остання команда, ви можете зробитиbleopt prompt_rps1_final='$(starship module time)'
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"))()
Bash не має офіційної системи preexec/precmd, як більшість інших оболонок. Через це важко забезпечити повністю настроювані гачки для цього в bash. Однак, Starship дає можливість вставити свої власні функції в процедуру виводу командного рядка:
starship_precmd_user_func. Наприклад, щоб показати ракету перед командним рядком, ви можете зробити наступнеfunction blastoff(){
echo "🚀"
}
starship_precmd_user_func="blastoff"
DEBUG trap. Однак, ви повинні перехопити сигнал 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
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.
# edit $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
Деякі оболонки підтримують подовження вводу так само як і звичайний ввід в командний рядок. Такий ввід буде показаний замість звичайного, колі користувач ввів символ продовження вводу (наприклад одну ліву дужку чи лапку).
У Starship можна встановити показ продовженого вводу за допомогою параметра continuation_prompt. Стандартний командний рядок — '[∙](bright-black) '.
Примітка: continuation_prompt слід встановити на літеральний рядок без жодних змінних.
Примітка: Подовжений ввід доступний лише для наступних оболонок:
bashzshPowerShell# ~/.config/starship.toml
# Подовжений ввід позначається двома стрілками
continuation_prompt = '▶▶ '
Starship підтримує показ власного рядка стану під час роботи в Claude Code — інструменті командного рядка від Anthropic, призначеному для інтерактивного програмування за допомогою Claude. Ця рядок стану надає інформацію в режимі реального часу про вашу сесію Claude, зокрема про використовувану модель, використання вікна контексту та вартість сесії.
Докладнішу інформацію про функцію рядка стану Claude Code див. у документації щодо рядка стану Claude Code.
Щоб використовувати Starship як рядок стану Claude Code:
/statusline в Claude Code і попросіть його налаштувати Starship, або вручну додати наступне на Ваш .claude/settings.json:{
"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, яка використовується в сесії.
| Параметр | Стандартно | Опис |
|---|---|---|
format | '[$symbol$model]($style) ' | Формат модуля. |
symbol | '🤖 ' | Симовл, який показується перед назвою моделі. |
style | 'bold blue' | Стиль модуля. |
model_aliases | {} | Звʼязує ідентифікатори моделей або їхні назви з коротшими псевдонімами. Спочатку перевіряється ідентифікатор, потім назва. |
disabled | false | Вимикає модуль claude_model. |
| Змінна | Приклад | Опис |
|---|---|---|
| model | Claude 3.5 Sonnet | Імʼя поточної моделі |
| model_id | claude-3-5-sonnet | ID моделі |
| symbol | Віддзеркалює значення параметра symbol | |
| 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 показує використання контекстного вікна у вигляді відсотка і візуального індикатора. Стиль автоматично змінюється на основі налаштованих порогів.
| Параметр | Стандартно | Опис |
|---|---|---|
format | '[$gauge $percentage]($style) ' | Формат модуля. |
symbol | '' | Символ, який показується перед індикатором. |
gauge_width | 5 | Ширина індикатора в символах. |
gauge_full_symbol | '█' | Символ, який використовується для заповнених сегментів індикатора. |
gauge_partial_symbol | '▒' | Символ, який використовується для частково заповнених сегментів індикатора. |
gauge_empty_symbol | '░' | Символ, який використовується для не заповнених сегментів індикатора. |
display | дивіться нижче | Налаштування порогів та стилів. |
disabled | false | Вимикає модуль claude_context. |
Параметр 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 | Віддзеркалює значення параметра symbol | |
| 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 Code в доларах США. Як і claude_context, він підтримує стилізацію на основі порогових значень.
| Параметр | Стандартно | Опис |
|---|---|---|
format | '[$symbol(\\$$cost)]($style) ' | Формат модуля. |
symbol | '💰 ' | Символ, який показується перед сумою витрат. |
display | дивіться нижче | Налаштування порогів та стилів. |
disabled | false | Вимикає модуль claude_cost. |
Параметр 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 | Віддзеркалює значення параметра symbol | |
| 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.Якщо для тексту та фону задано кілька кольорів, останній в рядку буде мати вищий пріоритет.
Не кожен рядок стилю буде правильно показуватись у кожному терміналі. Зокрема, існують такі відомі примхи:
blink.hidden не підтримується в iTerm.strikethrough не підтримується стандартно в macOS Terminal.app.