Командная оболочка Fish Shell, популярная среди пользователей терминалов, обновилась до версии 4.0, которая принесла значительные изменения и улучшения.
Основное новшество заключается в том, что Fish Shell теперь полностью переписана на языке программирования Rust. Однако для обычных пользователей этот переход будет практически незаметен: команды, настройки и типичные взаимодействия останутся прежними.
Другие значимые изменения изменения
- Новая система привязки клавиш. Fish Shell 4.0 представляет обновленную систему привязки клавиш и более глубокую совместимость с терминалами. Теперь можно заменить неинтуитивные esc-последовательности на более человекочитаемые команды, такие как
bind ctrl-right
. Благодаря поддержке протокола клавиатуры Kitty, Fish может различать последовательности управления, которые ранее казались идентичными, напримерbind ctrl-i
,bind ctrl-I
иbind tab
. - Интеграция с возможностями терминала. Fish теперь автоматически использует последовательности OSC 133 для подсказок и вывода команд, что способствует более гладкой синхронизации с различными терминалами, которые ранее полагались на дополнительные скрипты интеграции оболочки.
- Улучшенная обработка длинных команд. Оболочка теперь более аккуратно обрабатывает длинные командные строки, прокручивая их вместо неправильного отображения. Любые изменения, вызванные привязками командной строки, сразу видны, что обеспечивает более интуитивный опыт работы.
- История команд. Пейджер истории команд, впервые представленный в Fish 3.6, был доработан. Теперь можно использовать синтаксис glob для более точной фильтрации записей истории, например, поиск по
* glob syntax - git*HEAD
выдаст всё, где естьgit
иHEAD
именно в таком порядке. - Новая тема по умолчанию. В новой версии тема по умолчанию была слегка изменена: команды теперь отображаются в «нормальном» цвете терминала вместо трудночитаемого «синего». Существующие пользователи сохранят свои текущие настройки, если не перезагрузят тему вручную через
fish_config
. - Самоустанавливаемые сборки. Новая функция самоустанавливаемых сборок может стать настоящим прорывом для пользователей, часто работающих через SSH на серверах без административных привилегий. После компиляции Fish можно запустить один самодостаточный бинарный файл, который извлекает все необходимое — функции, страницы руководства и даже веб-инструмент настройки — в домашний каталог.
- Исключение команд из истории. Наконец появилась долгожданная функция, позволяющая исключать определенные команды из истории. Определив пользовательскую функцию
fish_should_add_to_history
, можно точно решить, какие команды будут сохранены. - Улучшения для скриптинга:
string match
теперь поддерживает опцию--max-matches
, позволяющую ограничить количество обрабатываемых совпадений;- циклы
for
больше не будут запоминать локальные переменные из предыдущей итерации; set
получает опцию--no-event
для подавления событий изменения переменных;time
начинает измерение раньше, захватывая продолжительность любых подстановок команд до их выполнения;complete --erase
полностью отключает автозагрузку завершений для указанных команд.