4 сентября 2020 г.

Делаем крутую командную строку в Windows как в zsh

Командная оболочка zsh с темой oh-my-zsh для MacOS

Я занимаюсь фронтенд-разработкой уже довольно длительное время (больше года) и работа под Windows меня удовлетворяла абсолютно всем, кроме некоторых неудобств в командной строке. Я, конечно же, смотрю большое количество обучающих видеороликов от профессиональных программистов и вижу, что большинство разработчиков использует в качестве своей основной рабочей системы MacOS и командную оболочку zsh со специальными настройками oh-my-zsh (это целый фреймворк, который позволяет максимально гибко кастомизировать оболочку). В Windows 10 давно нет никаких проблем с командным оболочками: можете использовать устаревшую cmd, можете установить PowerShell Core, а можете скачать Git SCM и без проблем использовать bash для Windows из её поставки (вы обязательно её скачаете для использования git на компьютере с Windows). И это не говоря про замечательную подсистему WSL2, которая позволяет установить вам полноценный дистрибутив Linux на выбор и получать оттуда доступ к ресурсам Windows (доступ к файловой системе в первую очередь). 

Новый Windows Terminal

Лично я остановил свой выбор на git bash, PowerShell Core, а в качестве терминала использую новую версию Windows Terminal и встроенный терминал в редактор кода VS Code. Каково же было моё удивление, когда я узнал, что существует проект oh-my-posh, который запросто позволяет вам сделать из PowerShell подобие zsh (да подобие, но так как фронтендеры используют командную строку в качестве вспомогательного инструмента запуска скриптов и работы с git, то мне данный вариант вполне подойдёт). Самое основное, что мне нужно было от командной строки это индикация параметров git - и она там ничем не отличается от подобной в oh-my-zsh. Ну и поддержка тем на закуску (все хотят сделать красоту).  

Установить oh-my-posh довольно просто и я это сделал буквально за несколько шагов с помощью вот этого гайда. Первым делом, конечно, стоит установить последнюю версию PowerShell Core с репозитория github. В отличии от Windows Terminal, который самостоятельно устанавливается и обновляется из Microsoft Store, PS Core пока так не умеет. Не лишне будет прописать использование именно PowerShell Core для встроенного терминала VS Code. Делается это через редактирования соответствующего параметра в настройках settings.json:

Редактирование параметров редактора кода VS Code

Устанавливаем модули поддержки git и oh-my-posh:

Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser

Тема Sorin

Включаем приглашение командной строки и выбираем тему oh-my-posh (список тем и их названия вы можете посмотреть и выбрать здесь):

Set-Prompt
Set-Theme Sorin

Спецсимволы в шрифте Fira Code

Если вы в это время находились в своём репозитории git, то вы уже должны были увидеть указание на ветку и другие параметры git, но возможно вы увидели в командной строке какие-то кракозябры и прямоугольники вместо понятных символов. Ничего страшного, просто ваш шрифт консоли не поддерживает вывод символов Powerline и надо его сменить. К счастью, дизайнеры шрифтов давно поняли нужды программистов и все последние версии популярных шрифтов для программистов идут уже с поддержкой лигатур и powerline (обычно такие можно отличить по приписке PL в конце). Например версия шрифтов Cascadia идёт с вариантом PL, в Fira Code уже есть эти символы, а все шрифты из набора Nerd Fonts пропатчены специальным образом. Так же можете сами пропатчить любой шрифт символами Powerline с помощью специального скрипта, но вряд ли этим будут заниматься все (просто знайте о такой возможности). Сменить шрифт в Terminal можно через редактирование профиля темы в текстовом файле (не очень удобно для новичков, зато крайне просто и наглядно), а в VS Code в настройках, введя в поиск "terminal font". 

Все эти изменения, которые вы сделали, действуют только в рамках одного сеанса и неплохо было бы их сохранить на постоянной основе в настройки. Для этого вам нужно запустить любой редактор и внести изменения в файл профиля. Я сделал это командой "code $PROFILE" (команда code это сокращенная команда для запуска VS Code), куда внёс следующие строки:

Import-Module posh-gitImport-Module oh-my-posh
Set-Theme Sorin
Import-Module PSFzf

Последний модуль PSFzf отвечает за удобный поиск команд и файлов в строке (т.н. fuzzy search, написан на языке программирования Go). Установка его слегка замороченная, так что можете его пока не ставить, тем более я сам пока не разобрался как им пользоваться и какая мне от него польза. Сначала вам надо найти и скачать скомпилированную версию PSFzf (ссылка на неё вывалится при попытке установить командой Install-Module PSFzf -Scope CurrentUser)  и закинуть её в системный каталог типа system32, чтобы она была доступна через PATH. После этого надо зарегистрировать сочетания клавиш для неё и загрузить:

Remove-PSReadlineKeyHandler 'Ctrl+r'

Remove-PSReadlineKeyHandler 'Ctrl+t'
Import-Module PSFzf

И вот, после все этих манипуляций (достаточно несложных даже для начинающего программиста) у вас на компьютере с Windows будет превосходная командная строка, которая будет радовать глаз. Кстати, некоторые программисты-"виндузятники" даже используют Vim и программируют именно в нём, отрицая другие редакторы кода или полноценные IDE для Windows. Надеюсь вы поняли, что операционная система для программиста лишь инструмент для решения задач, а внешний вид и функциональность можно настроить дополнительно по своему желанию. 

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

Update: недавно обнаружил аналогичный проект от известного программиста, который похожим образом "прокачивает" PowerShell и другие коммандные оболочки. Называется проект - Starship и под капотом он использует язык программирования Rust. 

Комментариев нет :

Отправка комментария