Skip to content

Часто задаваемые вопросы

Какая конфигурация используется в демо-GIF?

Как мне получить автодополнение команд, как показано на демонстрационной GIF?

Автодополнение команд обеспечивается выбранной вами оболочкой. В данном случае, демо было выполнено с Fish Shell, которая обеспечивает дополнения по умолчанию. Если вы используете Z Shell (zsh), я бы посоветовал взглянуть на zsh-autosuggestions.

Выполните format верхнего уровня и <module>.disabled одно и то же?

Да, они могут быть использованы для отключения модулей в подсказке. Если всё, что вы хотите сделать - это отключить модули, <module>.disabled - предпочитаемый способ сделать это по следующим причинам:

  • Отключение модулей является более явным, чем их исключение из format верхнего уровня
  • Новосозданные модули будут добавлены в подсказку по мере обновления Starship

Доки говорят, что Starship поддерживается на всех оболочках (cross-shell). Почему моя любимая оболочка не поддерживается?

Starship устроен так, что есть возможность добавить поддержку практически любой оболочки. Бинарный файл Starship не зависит от оболочки и не имеет состояния, так что если ваша оболочка поддерживает расширение подстрок и настройку подсказки, то Starship может быть использован.

Вот небольшой пример работы Starship с bash:

sh
# Get the status code from the last command executed
STATUS=$?

# Get the number of jobs running.
NUM_JOBS=$(jobs -p | wc -l)

# Установите запрос на вывод `starship prompt`
PS1="$(starship prompt --status=$STATUS --jobs=$NUM_JOBS)"

Реализация для Bash, встроенная в Starship, несколько сложнее, чтобы предоставить дополнительные возможности, такие как модуль длительности команды и обеспечить совместимость Starship с заранее установленными конфигурациями Bash.

Для списка всех флагов, принимаемых starship prompt, используйте следующую команду:

sh
starship prompt --help

Подсказка будет использовать столько контекста, сколько доступно, но ни один флаг не обязателен.

Как запускать Starship на Linux-дистрибутивах с более ранними версиями glibc?

Если вы получаете ошибку типа "version 'GLIBC_2.18' not found (required by starship)" при использовании заранее собранного бинарного файла (например, на CentOS 6 или 7), вы можете использовать бинарный файл, скомпилированый с musl вместо glibc:

sh
curl -sS https://starship.rs/install.sh | sh -s -- --platform unknown-linux-musl

Почему я вижу предупреждение Executing command "..." timed out.?

Starship выполняет различные команды, чтобы получить информацию, отображаемую в промпте, например версию программы или текущий git status. Чтобы быть уверенными, что starship не зависнет во время выполнения этих команд, мы поставили лимит времени, и если команда выполняется дольше лимита, starship прекратит её выполнение и выведет это предупреждение, это нормальное поведение. Временной лимит можно изменить с помощью опции command_timeoutkey, поэтому при желании вы можете увеличить это время. Вы так же можете следовать шагам для отладки ниже, чтобы понять, какая команда влияет на время и ускорить промпт. Наконец, вы можете изменить переменную окружения STARSHIP_LOG error, чтобы спрятать это предупреждение.

Я вижу символы, которые я не понимаю или не ожидаю, что они означают?

Если вы видите символы, которые вы не узнаете, вы можете использовать команду starship explain, чтобы разъяснить показываемые модули.

Starship делает что-то неожиданное, как я могу отладить его?

Вы можете включить отладочные журналы с помощью STARSHIP_LOG env var. Эти логи могут быть очень подробными, поэтому часто полезно использовать команду module если вы пытаетесь отладить тот или иной модуль, например, если вы пытаетесь отладить модуль rust, вы можете выполнить следующую команду, чтобы получить логи и вывод трассировки из модуля.

sh
env STARSHIP_LOG=trace starship module rust

Если starship работает медленно, вы можете попробовать использовать команду timings, чтобы узнать, виноват ли в этом какой-то конкретный модуль или команда.

sh
env STARSHIP_LOG=trace starship timings

Это выведет журнал трассировки и разбивку по всем модулям, выполнение которых либо заняло более 1 мс, либо привело к некоторому результату.

Наконец, если вы обнаружили ошибку, вы можете использовать команду bug-report для создания проблемы в GitHub.

sh
starship bug-report

Почему я не вижу символ в промпте?

Наиболее распространенной причиной этого является неправильная конфигурация системы. В частности, некоторые Linux дистрибутивы не предоставляют поддержку шрифта из коробки. Необходимо убедиться, что:

  • Для вашего языка задано значение UTF-8, например de_DE.UTF-8 или ja_JP.UTF-8. Если LC_ALL не является значением UTF-8, вам нужно будет изменить его.
  • У вас установлен шрифт emoji. В большинстве систем по умолчанию используется шрифт emoji, но в некоторых (например, в Arch Linux) его нет. Обычно вы можете установить его через менеджер пакетов вашей системы--noto emoji является популярным выбором.
  • Вы используете Nerd Font.

Для тестирования системы запустите следующие команды в терминале:

sh
echo -e "\xf0\x9f\x90\x8d"
echo -e "\xee\x82\xa0"

Первая строка должна создать эмоджи змеи, а вторая - символ ветки (e0a0).

Если любой из символов не отображается корректно, ваша система все еще неправильно настроена. К сожалению, иногда сложно получить правильную конфигурацию шрифта. Пользователи в Discord могут помочь. Если оба символа отображаются верно, но вы всё ещё не видите их в starship, отправьте bug report!

Как удалить Starship?

Starship так же прост в удалении, как и установка его в первую очередь.

  1. Удалите все строки в конфигурации вашей оболочки (например, ~/.bashrc), используемые для инициализации Starship.
  2. Удалите бинарный файл Starship.

Если Starship был установлен с помощью менеджера пакетов, пожалуйста, обратитесь к их документации для получения инструкций по установке.

Если Starship был установлен с помощью сценария установки, следующая команда удалит бинарный файл:

sh
# Найти и удалить бинарный файл starship
sh -c 'rm "$(command -v 'starship')"'

Как Starship без sudo?

Скрипт установки (https://starship.rs/install. h) использует sudo только если директория установки недоступна для записи текущим пользователем. Каталогом установки по умолчанию является значение переменной среды $BIN_DIR или /usr/local/bin, если значение $BIN_DIR не задано. Если вместо этого выбрать директорию установки, которая доступна для записи пользователем, вы можете установить starship без sudo. Например, в curl -sS https://starship.rs/install.sh | sh -s -- -b ~/.local/bin флаг -b установочного скрипта используется, чтобы задать директорию установки на ~/.local/bin.

Для неинтерактивной установки Starship не забудьте добавить опцию -y чтобы пропустить подтверждение. Проверьте исходник установочного скрипта, чтобы получить список всех поддерживаемых параметров установки.

При через пакетный менеджер, смотрите документацию для вашего пакетного менеджера об установке с sudo и без.