- WSL2 ви позволява да използвате цялостна Linux система в Windows и да я комбинирате със Zsh, за да създадете мощен и модерен терминал.
- Windows Terminal, Nerd Fonts и Oh My Zsh подобряват визуалното и функционалното изживяване с персонализирани теми, икони, плъгини и псевдоними.
- Bootstrap скриптовете, dotfiles и Dev контейнерите улесняват автоматизирането и версионирането на средата за целия екип за разработка.
- Интеграцията с VS Code и инструменти като NVM, Conda, BAT, LSD или FZF създава солиден и възпроизводим работен процес.
Ако разработвате в Node.js или Python на Windows и искате удобството на Linux, без да се отказвате от игрите, обичайните си инструменти или работния си процес, WSL2 и Zsh вероятно са комбинацията, която търсите. Наличието на истинска Linux дистрибуция с подобрен терминал и всичко перфектно автоматизирано прави настройването на среда за разработка вече не изпитание от часове, прекарани в копиране на команди.
В това ръководство ще видите, с голямо внимание и подробности, как да автоматизирате напълно WSL2 среда, използвайки Zsh и Oh My Zsh , как да я интегрирате с Windows Terminal и Visual Studio Code и как да я пакетирате в скриптове и dotfiles, така че вие (или някой от вашия екип) да може да възпроизведе същата настройка за минути. Идеята е да прекарвате по-малко време в борба с конфигурацията и повече време в писане на код.
Какво е WSL2 и защо си струва да се използва със Zsh?
WSL (Windows Subsystem for Linux) е слоят, който ви позволява да стартирате Linux в рамките на Windows без тромави виртуални машини или двойно зареждане. С WSL2, Microsoft отива още една крачка напред: той изпълнява пълноценно Linux ядро, използвайки Hyper-V , с много ниска консумация на ресурси и производителност, много близка до тази на оригинална инсталация.
Благодарение на това можете да инсталирате дистрибуции като Ubuntu, Debian, Kali или Alpine директно от Microsoft Store или с помощта на PowerShell команди и да се наслаждавате на файлова система на Linux, apt пакети, инструменти за разработка и, разбира се, разширени обвивки като Zsh с Oh My Zsh и неговите плъгини.
В продължение на много години програмирането на Windows беше непривлекателно : без bash, с неудобна файлова система и с по-малко вградени инструменти за разработчици, повечето в крайна сметка мигрираха към Linux или macOS. С WSL2 това се променя радикално: оставате на Windows, но работите сякаш сте на Linux дистрибуция , с възможност за автоматизиране на почти целия процес на конфигуриране.
Красотата на комбинирането на WSL2 със Zsh се крие във факта, че Zsh предлага терминално изживяване, далеч по-добро от класическия bash : разширено автоматично довършване, предложения, теми, Git интеграция, NVM плъгини, псевдоними, синтактично подчертаване и много други неща, които, след като веднъж опитате, е трудно да оставите зад гърба си.

Инсталиране и подготовка на WSL2 на Windows 10 или 11
Преди да се задълбочим в фината настройка на автоматизацията, ще ви е необходим активиран WSL2 и инсталирана Linux дистрибуция . Процесът е много по-лесен в днешно време, отколкото в по-ранните версии, и почти всичко може да се направи с една единствена команда.
В скорошни версии на Windows 10 (версия 2004 или по-нова) или Windows 11 , просто отворете PowerShell като администратор (потърсете го в менюто „Старт“, щракнете с десния бутон върху него, „Изпълни като администратор“) и стартирайте:
wsl --install
Тази команда активира необходимите допълнителни функции , изтегля ядрото на Linux , задава WSL2 като версия по подразбиране и инсталира Ubuntu като дистрибуция по подразбиране . След като процесът приключи, системата ще ви подкани да рестартирате компютъра си, за да приложите промените.
Ако предпочитате различна дистрибуция, можете да я посочите в самата команда, например за да инсталирате Debian:
wsl --install -d Debian
По всяко време можете да проверите състоянието на инсталираните дистрибуции и техните версии с:
wsl -l -v
И ако искате да промените дистрибуциите или да почистите такава, която вече не използвате, имате опции като изброяване на наличните дистрибуции онлайн или премахване на конкретна инсталация:
wsl -l -o
wsl --unregister Ubuntu-20.04
Когато стартирате дистрибуцията си за първи път, ще се появи текстов съветник, който ще ви помоли да Създаване на UNIX потребител и неговата паролаТова ще бъде вашият основен потребител в WSL, с типичния му HOME адрес в /home/tuusuarioИ е важно да си запишете потребителското име и паролата, защото ще ги използвате за административни задачи. sudo.
Конфигурирайте Windows Terminal за работа с WSL2
След като стартирате WSL2, следващата логична стъпка е да подобрите работата си с командния ред в Windows, използвайки Windows Terminal . Това приложение поддържа раздели, панели, теми, прозрачност, специфични за дистрибуцията профили, шрифтове за икони и много други.
Инсталирайте Windows Terminal от Microsoft Store и когато го отворите, ще видите, че обикновено по подразбиране показва PowerShell или CMD профил. От падащото меню можете да изберете вашата WSL дистрибуция (Ubuntu, Debian и др.) и да я отворите в нов раздел.
Така че Ubuntu или каквато и да е дистрибуция, която използвате в WSL, винаги ще се отваря по подразбиране.Можете да редактирате настройките. Windows Terminal запазва настройките си в JSON файл, достъпен от менюто с настройки. Намерете полето "defaultProfile" и сложи GUID на профил в Ubuntu (ще го видите в списъка) profiles) като стойност.
В допълнение към това, можете Персонализирайте цветови теми и добавете акрилна прозрачност за да му придадат по-модерен вид. Например, в частта на "defaults" За профилите можете да дефинирате нещо подобно:
"defaults": {
"useAcrylic": true,
"acrylicOpacity": 0.4
}
Ако искате да направите нещата още по-сложни с цветовете, можете да добавите персонализирана схема в секцията "schemes" от JSON, дефиниране на цветовете на фона, цветовете на предния план и основната палитра на терминала. Типичен пример би бил нещо като solarized тема, към която след това можете да свържете WSL профил, използвайки свойството "colorScheme" : "wsl" в съответния профил.

Инсталирайте и автоматизирайте Zsh + Oh My Zsh в WSL2
След като WSL и Windows Terminal са налице, е време да добавим сериозна мощност към shell-а. Zsh е много по-мощна алтернатива на bash и в комбинация с Oh My Zsh се превръща в швейцарско ножче за работа с Git, Node, Python и практически всичко останало в терминала.
Във вашата WSL дистрибуция (например Ubuntu), започнете с актуализиране на хранилищата и инсталиране на минимално необходимите пакети :
sudo apt update
sudo apt install git zsh -y
След това инсталирайте Oh My Zsh, използвайки официалния скрипт, като използвате curl, за да изтеглите инсталатора и да го стартирате директно:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
По време на инсталацията ще бъдете попитани дали искате да зададете Zsh като обвивка по подразбиране ; отговорете „да“. Ако някога се наложи да направите това ръчно, можете да използвате:
chsh -s /bin/zsh
След като приключите, в домашната ви директория ще бъде генериран конфигурационен файл с име ~/.zshrcкъдето всичко е контролирано: плъгини, тема, псевдоними, среда, маршрути…
Много популярна тема за Oh My Zsh е агност, фокусиран върху ясното показване на информацията от Git. За да го активирате, редактирайте файла ~/.zshrc с предпочитания от вас редактор (например vi ~/.zshrc o nano ~/.zshrc) и се уверете, че темата изглежда така:
ZSH_THEME="agnoster"
Препоръчително е също, както в bash, така и в Zsh, принудете shell-а да стартира във вашата Linux HOME директория (не в потребителската папка на Windows), тъй като WSL работи много по-добре в рамките на родната файлова система на дистрибуцията. Просто добавете следното в края на ~/.zshrc един прост ред:
cd ~
Nerd Fonts и Powerline: икони и естетика в терминала
За да изглеждат темите на Zsh и Oh My Zsh както трябва, ви е необходим шрифт, който поддържа специални икони и символи (т.нар. Nerd Fonts или Powerline шрифтове). В противен случай ще виждате странни квадратчета или счупени символи в по-напредналите подкани.
Имате две популярни опции: инсталирайте класически пакет с шрифтове Powerline или изберете специфичен шрифт Nerd, като MesloLGS NF или Hack Nerd Font . Бърз метод е да клонирате хранилището с шрифтове Powerline от PowerShell в Windows, като първо отидете в празна папка:
git clone https://github.com/powerline/fonts.git
cd fonts
.\install.ps1
Инсталационният скрипт автоматично ще добави редица шрифтове към системата. След това от настройките на Windows Terminal изберете един от инсталираните шрифтове за WSL профила, например:
"fontFace": "DejaVu Sans Mono for Powerline"
Ако предпочитате нещо още по-модерно, можете да изтеглите специфичен шрифт Nerd (като MesloLGS NF Regular.ttf ) от уебсайта на Nerd Fonts, да го инсталирате в Windows, като щракнете двукратно и изберете „Инсталиране“, след което да го изберете като ваш шрифт в профила на терминала на Windows.
Ако използвате разширени теми като Powerlevel10k , силно се препоръчва да използвате Nerd Fonts. За да инсталирате тази тема, можете да направите следното в потребителския си акаунт в WSL:
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ~/powerlevel10k
echo 'source ~/powerlevel10k/powerlevel10k.zsh-theme' >> ~/.zshrc
След презареждане на Zsh (zsh или затворете и отворете терминала), ще се стартира помощник с насоки (p10k configure) за да персонализирате подканата по ваш вкус, генерирайки файл ~/.p10k.zsh с всички настройки.

Полезни плъгини за Zsh: незабавна продуктивност
Едно от големите предимства на Oh My Zsh е, че ви позволява лесно да добавяте плъгини, за да подобрите работния си процес. Някои от най-често използваните плъгини в WSL2 среди за разработка са изброени по-долу.
Плъгинът Git е активиран по подразбиране и показва в кой клон се намирате, дали имате чакащи промени, дали има некомитирани промени и т.н. - всичко това директно в подканата. Той е идеален за следене на състоянието на вашето хранилище, докато разглеждате.
Друга класика е zsh-autosuggestions , която предлага команди в сиво въз основа на вашата история, което ви позволява да приемете предложението с натискане на клавиш и да избегнете многократното въвеждане на едни и същи дълги комбинации . За да я инсталирате:
git clone https://github.com/zsh-users/zsh-autosuggestions ~/.zsh/zsh-autosuggestions
Силно препоръчителен е и zsh-syntax-highlighting , който оцветява командите според това дали са написани правилно, дали файловете, към които сочите, съществуват и т.н., помагайки ви да откриете синтактични грешки, преди да натиснете Enter :
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ~/.zsh/zsh-syntax-highlighting
Активирайте тези плъгини, добавете следното в края на вашия ~/.zshrc нещо подобно:
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
Друга много удобна екстра е плъгинът Oh My Zsh sudo , който ви позволява например да натиснете клавишна комбинация, за да добавите бързо „sudo“ преди последната изпълнена команда. Можете да го изтеглите оттук:
mkdir -p ~/.zsh/sudo-plugin && cd ~/.zsh/sudo-plugin
wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/plugins/sudo/sudo.plugin.zsh
И го активирайте, като го добавите към вашия ~/.zshrc:
source ~/.zsh/sudo-plugin/sudo.plugin.zsh
Подобрени инструменти за команден ред (BAT, LSD, FZF, HTTPie)
Тъй като настройвате терминала, струва си да инсталирате някои съвременни алтернативи на класическите комунални услуги като cat o lsкакто и инструменти за търсене и лесни за ползване HTTP клиенти.
НДНТ Това е „професионална“ версия на catС синтактично подчертаване, номериране, Git интеграция...Идеален за четене на кодови файлове директно в терминала. Можете да го инсталирате, като изтеглите съответния пакет от GitHub (адаптирайки го към вашата архитектура):
wget https://github.com/sharkdp/bat/releases/download/v0.20.0/bat_0.20.0_amd64.deb
sudo dpkg -i bat_0.20.0_amd64.deb
За да го интегрирате в работния си процес, можете да създадете псевдоними в ~/.zshrc така че, когато пишеш cat Всъщност извиках BAT, но запазих преките пътища към традиционната програма:
alias cat='/bin/bat'
alias catn='/bin/cat'
alias catnl='/bin/bat --paging=never'
От своя страна, LSD замества ls с цветове, икони и много по-четлив изходИнсталира се подобно на BAT:
wget https://github.com/Peltoche/lsd/releases/download/0.21.0/lsd_0.21.0_amd64.deb
sudo dpkg -i lsd_0.21.0_amd64.deb
След това можете да предефинирате общи псевдоними, за да сортирате директории, да показвате подробности, да ги скривате и т.н., например:
alias ll='lsd -lh --group-dirs=first'
alias la='lsd -a --group-dirs=first'
alias l='lsd --group-dirs=first'
alias lla='lsd -lha --group-dirs=first'
alias ls='lsd --group-dirs=first'
За интерактивно търсене в терминала, FZF е почти незаменим: той стартира инкрементална търсачка , която се интегрира с история, пътища и други команди. Инсталира се чрез клониране на хранилището му и изпълнение на инсталационния скрипт:
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
Инсталаторът ще добави към вашия ~/.zshrc el source съответстващо (нещо като [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh), така че всичко да е готово. Активира се с преки пътища като CTRL + T.
И накрая, ако работите с API, HTTPie Предлага много по-комфортно изживяване от curlС цветен изход и лесно четлив синтаксисМожете да го инсталирате, като добавите неговото хранилище и използвате apt:
curl -SsL https://packages.httpie.io/deb/KEY.gpg | apt-key add -
curl -SsL -o /etc/apt/sources.list.d/httpie.list https://packages.httpie.io/deb/httpie.list
apt update
apt install httpie
apt upgrade httpie
Node.js, NVM, Python и други инструменти в WSL2
Една от основните причини за създаването на тази система е да се осигури стабилна среда за Node.js, Python и други технологии , с опростен и възпроизводим контрол на версиите. Тук на помощ идват NVM за Node и инструменти като Conda за Python.
В случая с Node, идеалното решение е да използвате NVM (Node Version Manager) , който ви позволява да инсталирате множество версии и да превключвате между тях с няколко команди. От вашия WSL2 сървър можете да инсталирате NVM с:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | zsh
След това инсталирайте Node (текущата стабилна версия или конкретна такава):
nvm install node
nvm install 18.17.0
Ако искате да проверите дали всичко е наред, имате под ръка типичните команди за проверка на версията, които би трябвало да върнат валидни стойности:
node --version
npm --version
При Zsh, NVM понякога не се зарежда автоматично, когато отворите терминала. Можете да поправите това по два начина: ръчно добавяне на необходимите променливи към ~/.zshrc или с помощта на плъгина zsh-nvm от Oh My Zsh. Ръчният вариант може да изглежда така:
export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
Ако изберете плъгина, отворете ~/.zshrc, намерете реда с плъгини (например plugins=(git)) и добавя zsh-nvm Добавете го към списъка. След запазване и рестартиране на терминала, NVM би трябвало да се зареди без проблем.
За Python, много мощна опция е Conda (или Miniconda), която ви позволява да създавате изолирани среди, да управлявате зависимости и да обработвате версии на Python, без да взаимодействате с глобалната система. Има автоматизирани скриптове, които в рамките на WSL хранилище за конфигурации инсталират Conda, драйвери за графичен процесор и други компоненти почти прозрачно.
Автоматизирайте конфигурацията със скриптове, dotfiles и Dev Containers
Досега видяхме как да конфигурираме всичко ръчно, но ключът към добра работна среда, особено в екипи, е автоматизирането на внедряването и версирането на конфигурацията . WSL2 е идеален за това, защото ви позволява да пакетирате всичко - от инсталацията до персонализирането на обвивката.
Много често срещан подход е да се има скрипт за първоначално зареждане (например install.sh o setup.sh) в екипно хранилище, което изпълнява последователно задачи като:
- Проверете предварителните изисквания (Версия за Windows, активен WSL2, наличие на Docker Desktop, ако е необходимо и др.).
- Инсталирайте или актуализирайте WSL дистрибуциятаОсновни пакети, Zsh, Oh My Zsh, NVM, Conda и др.
- Клониране и прилагане на dotfiles (
.zshrc,.bashrc,.gitconfig, файлове с теми, споделени псевдоними…). - Инсталиране на инструменти за стек на проекти (Node, Python, бази данни, специфични CLI).
- Конфигуриране на скриптове за валидиране като
make check-envза да се увери, че всичко е правилно.
Тези скриптове трябва да бъдат идемпотентТоест, те трябва да могат да се изпълняват многократно, без да се повреди нищо, и е препоръчително да се документират всички променливи на средата във файл като .env.example така че всеки човек да може да персонализира средата си, без да докосва основния скрипт.
Друг много мощен слой е Контейнери за разработка на VS Code (.devcontainerТе се състоят от декларативни описания на средата (Dockerfile, конфигурация на VS Code, разширения, портове и др.), които позволяват всеки проект има свой собствен контейнер за разработкаВ комбинация с WSL2, благодарение на разширението Дистанционно – WSLМожете да отворите хранилище в Linux контейнер в WSL и да се уверите, че всички имат едни и същи версии и инструменти.
Успоредно с това, поддържането на хранилище от версирани dotfiles (например в GitHub) помага за споделяне и синхронизиране на конфигурации на shell, псевдоними, теми и програми на множество компютри или дори на различни машини, принадлежащи на един и същ разработчик. Инструменти като chezmoi или прости скриптове за символично копиране се използват широко за тази цел.
Интегриране на WSL2 и Zsh с Visual Studio Code
Практическата работа се подобрява значително, ако интегрирате цялата тази среда с лек, но високопроизводителен редактор като Visual Studio Code . Идеята е VS Code да работи директно с файловата система WSL , като по този начин се избягват проблеми с производителността и разрешенията.
Първо, инсталирайте VS Code на Windows от официалния му уебсайт. След това, от самия редактор, отворете раздела „Разширения“ (с клавишна комбинация Ctrl + Shift + X ) и потърсете и инсталирайте разширението „Remote - WSL“ . Това разширение ви позволява да отваряте папки и проекти, разположени във вашата Linux дистрибуция, като цялата логика се изпълнява в рамките на WSL.
След като го инсталирате, можете да стартирате следната команда от вашия Ubuntu терминал:
code .
Това ще отвори VS Code, свързан към WSL средата и с пълен достъп до инструментите, които сте инсталирали там. За да завършите визуалната интеграция, можете да конфигурирате интегрирания терминал на VS Code да използва същия шрифт Nerd, който сте избрали в Windows Terminal, така че иконите също да изглеждат добре.
{
"terminal.integrated.fontFamily": "DejaVu Sans Mono for Powerline"
}
Във файла settings.json Във VS Code можете също да зададете терминала по подразбиране за Windows да бъде вашият Ubuntu в WSL, като конфигурирате профил по следния начин:
"terminal.integrated.profiles.windows": {
"Ubuntu (WSL)": {
"path": "C:\\Windows\\System32\\wsl.exe",
"args": ["-d", "Ubuntu"]
}
},
"terminal.integrated.defaultProfile.windows": "Ubuntu (WSL)"
И докато сте там, можете да се възползвате от възможността да активирате автоматично форматиране при запазване, оцветяване на двойки скоби и други малки подобрения, които правят ежедневното използване на редактора по-приятно.
Автоматизирани скриптове и пълни хранилища за конфигурация на WSL2
Въпреки че можете да изградите своя собствена инфраструктура за скриптове, можете да разчитате и на предварително изградени хранилища, които автоматизират голяма част от работата . Някои от тези хранилища съдържат ръководства за Linux, скриптове за инсталиране на терминални помощни програми (Oh My Zsh, плъгини, теми), Conda, драйвери за графични процесори и други важни компоненти за среда за наука за данни или уеб разработка.
Идеята зад тези хранилища е ясна: с една команда изпълнявате Bash скрипт , който актуализира дистрибуцията, инсталира curl и Node.js, когато е необходимо, грижи се за NVM, изтегля шрифтове като Nerd Fonts, конфигурира Zsh с тема и разумен набор от плъгини и алиаси и оставя терминала ви готов за употреба.
По време на изпълнението на тези скриптове ще видите, че на няколко места ще бъдете помолени вашата администраторска парола поради използването на sudoТова е напълно нормално, тъй като пакетите се инсталират, системните пътища се променят и файловете се копират в защитени местоположения.
В някои случаи ще ви помолят да изберете конкретната версия на инструменти като BAT или LSD (например bat_0.25.0_amd64.deb o lsd_1.1.5_amd64.deb), което зависи както от версията, налична в GitHub, така и от архитектурата на вашата машина (обичайното нещо в днешно време е amd64Уверете се, че сте избрали правилния, за да избегнете грешки, свързани с несъвместими пакети.
Резултатът от този тип скрипт е среда, в която Zsh вече има файл .zshrc много пълноС тема, плъгини, алиаси за cat/ls, Gitmoji интеграция за комити с икони, когато ви липсва вдъхновение, синтактично подчертаване, автоматично довършване Oh My Zsh и други екстри. Уау, това е един от онези терминали, които ще искате да държите на екрана си по цял ден.
За да завършите персонализирането, можете дори Настройте темите, за да показвате само потребителското име (и да скриете името на хоста) директно модифициране на специфични файлове с теми, като например agnoster.zsh-theme в маршрута ~/.oh-my-zsh/themes, променяйки съответния ред на нещо подобно:
prompt_segment green black "%(!.%{%F{yellow}%}.)%n"
С всичко това, това, което постигате, е, че всеки разработчик в екипа може да клонира хранилището за конфигурации, да изпълни команда и след няколко минути да има същата среда като всички останали: същата обвивка, същата тема, същите версии на базовите инструменти и същото поведение на терминала, без трикове от типа „работи на моя компютър“ или „не помня какво инсталирах този ден“.
В крайна сметка, настройването и автоматизирането на WSL2 и Zsh среда включва комбиниране на няколко части: Linux база в Windows, добре конфигуриран терминал като Windows Terminal, подобрена обвивка с Oh My Zsh и неговите плъгини, съвременни инструменти като BAT, LSD или FZF, контрол на версиите с NVM или Conda, интеграция с VS Code чрез Remote-WSL и скриптове и dotfiles, които ви позволяват надеждно да възпроизвеждате всичко това. Ако отделите време за фина настройка, ще имате екосистема, в която преминаването от нулата до удобно програмиране отнема минути, вместо цели следобеди ръчно преинсталиране на нещата.
