Часто задаваемые вопросы
Какая конфигурация используется в демо-GIF?
- Эмулятор терминала: iTerm2
- Тема: Minimal
- Цветовая схема: Snazzy
- Шрифт: FiraCode Nerd Font
- Командная оболочка: Fish Shell
- Конфигурация: matchai's Dotfiles
- Подсказка: Starship
Как мне получить автодополнение команд, как показано на демонстрационной GIF?
Автодополнение команд обеспечивается выбранной вами оболочкой. В данном случае, демо было выполнено с Fish Shell, которая обеспечивает дополнения по умолчанию. Если вы используете Z Shell (zsh), я бы посоветовал взглянуть на zsh-autosuggestions.
Выполните format
верхнего уровня и <module>.disabled
одно и то же?
Да, они могут быть использованы для отключения модулей в подсказке. Если всё, что вы хотите сделать - это отключить модули, <module>.disabled
- предпочитаемый способ сделать это по следующим причинам:
- Отключение модулей является более явным, чем их исключение из
format
верхнего уровня - Новосозданные модули будут добавлены в подсказку по мере обновления Starship
Доки говорят, что Starship поддерживается на всех оболочках (cross-shell). Почему моя любимая оболочка не поддерживается?
Starship устроен так, что есть возможность добавить поддержку практически любой оболочки. Бинарный файл Starship не зависит от оболочки и не имеет состояния, так что если ваша оболочка поддерживает расширение подстрок и настройку подсказки, то Starship может быть использован.
Вот небольшой пример работы Starship с bash:
# 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
, используйте следующую команду:
starship prompt --help
Подсказка будет использовать столько контекста, сколько доступно, но ни один флаг не обязателен.
Как запускать Starship на Linux-дистрибутивах с более ранними версиями glibc?
Если вы получаете ошибку типа "version 'GLIBC_2.18' not found (required by starship)" при использовании заранее собранного бинарного файла (например, на CentOS 6 или 7), вы можете использовать бинарный файл, скомпилированый с musl
вместо glibc
:
curl -sS https://starship.rs/install.sh | sh -s -- --platform unknown-linux-musl
Почему я вижу предупреждение Executing command "..." timed out.
?
Starship выполняет различные команды, чтобы получить информацию, отображаемую в промпте, например версию программы или текущий git status. Чтобы быть уверенными, что starship не зависнет во время выполнения этих команд, мы поставили лимит времени, и если команда выполняется дольше лимита, starship прекратит её выполнение и выведет это предупреждение, это нормальное поведение. Временной лимит можно изменить с помощью опции command_timeout
key, поэтому при желании вы можете увеличить это время. Вы так же можете следовать шагам для отладки ниже, чтобы понять, какая команда влияет на время и ускорить промпт. Наконец, вы можете изменить переменную окружения STARSHIP_LOG
error
, чтобы спрятать это предупреждение.
Я вижу символы, которые я не понимаю или не ожидаю, что они означают?
Если вы видите символы, которые вы не узнаете, вы можете использовать команду starship explain
, чтобы разъяснить показываемые модули.
Starship делает что-то неожиданное, как я могу отладить его?
Вы можете включить отладочные журналы с помощью STARSHIP_LOG
env var. Эти логи могут быть очень подробными, поэтому часто полезно использовать команду module
если вы пытаетесь отладить тот или иной модуль, например, если вы пытаетесь отладить модуль rust
, вы можете выполнить следующую команду, чтобы получить логи и вывод трассировки из модуля.
env STARSHIP_LOG=trace starship module rust
Если starship работает медленно, вы можете попробовать использовать команду timings
, чтобы узнать, виноват ли в этом какой-то конкретный модуль или команда.
env STARSHIP_LOG=trace starship timings
Это выведет журнал трассировки и разбивку по всем модулям, выполнение которых либо заняло более 1 мс, либо привело к некоторому результату.
Наконец, если вы обнаружили ошибку, вы можете использовать команду bug-report
для создания проблемы в GitHub.
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.
Для тестирования системы запустите следующие команды в терминале:
echo -e "\xf0\x9f\x90\x8d"
echo -e "\xee\x82\xa0"
Первая строка должна создать эмоджи змеи, а вторая - символ ветки (e0a0).
Если любой из символов не отображается корректно, ваша система все еще неправильно настроена. К сожалению, иногда сложно получить правильную конфигурацию шрифта. Пользователи в Discord могут помочь. Если оба символа отображаются верно, но вы всё ещё не видите их в starship, отправьте bug report!
Как удалить Starship?
Starship так же прост в удалении, как и установка его в первую очередь.
- Удалите все строки в конфигурации вашей оболочки (например,
~/.bashrc
), используемые для инициализации Starship. - Удалите бинарный файл Starship.
Если Starship был установлен с помощью менеджера пакетов, пожалуйста, обратитесь к их документации для получения инструкций по установке.
Если Starship был установлен с помощью сценария установки, следующая команда удалит бинарный файл:
# Найти и удалить бинарный файл 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
и без.