Przenoszenie programowania JavaScript do Bash w systemie Windows

Opublikowany: 2022-03-10
Krótkie podsumowanie ↬ Kochasz swój terminal Bash, ale też kochasz swój komputer? Być może masz oko na jakiś nowy sprzęt Surface, ale nie możesz dokonać zmiany bez terminala. Teraz możesz mieć Windows i Bash. W tym artykule przyjrzymy się szczegółowo, jak skonfigurować pole programistyczne Windows/Linux do programowania JavaScript.

Jestem jedną z tych osób, które nie mogą żyć bez terminala Bash. Ten sam fakt utrudnił mi pracę z frontendem w systemie Windows. Pracuję w firmie Microsoft i korzystam z komputera Mac. Dopiero kilka lat temu pojawiła się nowa linia sprzętu Surface, zdałem sobie sprawę: muszę mieć jeden z nich .

Więc mam jeden. A dokładnie Surface Book 2 z systemem Windows 10. Piszę teraz ten artykuł na ten temat. A co z moją słodką, słodką zachętą do Bash? No cóż, oczywiście przyniosłem to ze sobą.

W tym artykule przyjrzę się dogłębnie, jak nowa technologia w systemie Windows 10 umożliwia uruchomienie pełnego terminala Linux w systemie Windows. Pokażę ci również moją niesamowitą konfigurację terminala (która została nazwana przeze mnie „najlepszą w historii”) i jak ty też możesz skonfigurować swoją własną maszynę programistyczną z systemem Windows/Linux.

Jeśli masz ochotę na trochę tego sprzętu Surface, ale nie możesz żyć bez terminala Linux, jesteś we właściwym miejscu.

Uwaga : w momencie pisania tego tekstu wiele elementów w tym artykule będzie wymagało użycia lub przełączenia się na kompilacje „podgląd” lub „wtajemniczonych” różnych elementów, w tym systemu Windows. Większość z tych rzeczy pojawi się w głównej wersji systemu Windows w przyszłości.

Więcej po skoku! Kontynuuj czytanie poniżej ↓

Podsystem Windows dla systemu Linux (WSL)

Podsystem Windows dla systemu Linux lub „WSL” umożliwia uruchamianie systemu Linux w systemie Windows. Ale czym właściwie jest ta szalona nauka?

WSL, w swoim obecnym wcieleniu, jest warstwą translacji, która konwertuje wywołania systemowe Linuksa na wywołania systemowe Windows. Linux działa na szczycie WSL. Oznacza to, że aby zainstalować Linuksa w systemie Windows, musisz zrobić trzy rzeczy:

  1. Włącz WSL,
  2. Zainstaluj Linuksa,
  3. Na liście zawsze umieszczaj trzy pozycje.

Jak się okazuje, ta warstwa tłumaczeniowa jest odrobinę wolniejsza — trochę tak, jak ja staram się zapamiętać, czy potrzebuję splice lub slice . Jest to szczególnie ważne, gdy WSL odczytuje i zapisuje w systemie plików. To duży problem dla twórców stron internetowych, ponieważ każda poprawna npm install skopiuje tysiące plików na twoją maszynę. To znaczy, nie wiem jak ty, ale nie zamierzam lewicować własnych strun.

Wersja 2 WSL to inna historia. Jest znacznie szybszy niż bieżąca wersja, ponieważ wykorzystuje rdzeń wirtualizacji w systemie Windows zamiast korzystać z warstwy tłumaczeniowej. Kiedy mówię, że jest „znacznie szybszy”, mam na myśli sposób, o wiele szybszy. Tak szybko jak ja w Googlingu „splice vs slice”.

Z tego powodu pokażę, jak zainstalować WSL 2. W chwili pisania tego tekstu będzie to wymagało od ciebie posiadania wersji „Insider” systemu Windows.

Po pierwsze: postępuj zgodnie z tym krótkim przewodnikiem, aby włączyć WSL w systemie Windows 10 i sprawdź numer wersji systemu Windows.

Po zainstalowaniu naciśnij klawisz Windows i wpisz „windows insider”. Następnie wybierz „Ustawienia niejawnego programu testów systemu Windows”.

Opcja menu ustawień niejawnego programu testów systemu Windows
(duży podgląd)

Będziesz mieć kilka różnych opcji, na którym „pierścieniu” chcesz się znaleźć. Wiele osób, które znam, jest na szybkim ringu. Ale jestem ostrożnym facetem. Kiedy byłem dzieckiem, zjeżdżałem zjeżdżalnią na placu zabaw na brzuchu trzymając się boków. Dlatego pozostaję na wolnym ringu. Pracuję na nim od kilku miesięcy i uważam, że nie jest on bardziej destrukcyjny ani niestabilny niż zwykły system Windows.

To dobra opcja, jeśli chcesz WSL 2, ale nie chcesz umrzeć na zjeżdżalni.

Ekran ustawień Windows Insider pokazujący „Wolny” dzwonek
(duży podgląd)

Uwaga : Po opublikowaniu tego artykułu dowiedziałem się, że WSL 2 w rzeczywistości nie działa na wolnym pierścieniu. Aby go zdobyć, musisz być na szybkim ringu. Musiałem być na szybkim ringu w pewnym momencie pisania tego artykułu. Tak szybko dzwoni. Powodzenia na zjeżdżalni!

Następnie musisz włączyć funkcję „Platforma maszyny wirtualnej” w systemie Windows, która jest wymagana przez WSL w wersji 2. Aby przejść do tego ekranu, naciśnij klawisz Windows i wpisz „funkcje systemu Windows”. Następnie wybierz "Włącz lub wyłącz funkcje systemu Windows". Wybierz „Platforma maszyny wirtualnej”. Opcja „Podsystem Windows dla systemu Linux” powinna już być włączona.

Ekran „Funkcje systemu Windows” z podświetlonymi „Platforma maszyny wirtualnej” i „Podsystem Windows dla systemu Linux”
(duży podgląd)

Teraz, gdy WSL jest włączone, możesz zainstalować Linuksa. Robisz to, jak na ironię, bezpośrednio ze Sklepu Windows. Dopiero w 2019 roku sugerowałbym „zainstalowanie Linuksa ze sklepu Windows”.

Do wyboru jest kilka różnych dystrybucji, ale Ubuntu będzie najbardziej obsługiwany we wszystkich narzędziach, które skonfigurujemy później — w tym VS Code. Wszystkie instrukcje, które pochodzą z tego miejsca, zakładają instalację Ubuntu. Jeśli zainstalujesz inną dystrybucję, wszystkie zakłady zostaną anulowane.

Wyszukaj „Ubuntu” w Sklepie Windows. Do wyboru będą trzy: Ubuntu, Ubuntu 18.04 i Ubuntu 16.04. Ubuntu naprawdę lubi ten numer wersji pomocniczej 04, prawda?

Pozycja „Ubuntu” w Sklepie Windows
(duży podgląd)

Dystrybucja „Ubuntu” (pierwsza na tym zrzucie ekranu) to „wersja meta”, a raczej symbol zastępczy, który po prostu wskazuje na najnowszą wersję. W tej chwili jest to 18.04.

Poszedłem z wersją meta, ponieważ później pokażę ci, jak przeglądać system plików Linuksa za pomocą Eksploratora Windows i jest trochę bałaganu mieć „Ubuntu 18.04” jako nazwę dysku w porównaniu z samym „Ubuntu”.

Ta instalacja jest dość szybka w zależności od połączenia internetowego. To tylko około 215 megabajtów, ale jestem na połączeniu gigabitowym tutaj i skąd możesz wiedzieć, czy ktoś jest na połączeniu gigabitowym? Nie martw się, powiedzą ci.

Po zainstalowaniu będziesz mieć teraz aplikację „Ubuntu” w swoim menu startowym.

Ubuntu zainstalowany i wyświetlany w menu Start systemu Windows
(duży podgląd)

Jeśli to klikniesz, otrzymasz terminal Bash!

Terminal Ubuntu działający w systemie Windows
(duży podgląd)

Poświęć chwilę na rozkoszowanie się cudem technologii.

Domyślnie korzystasz z WSL w wersji 1. Aby uaktualnić do wersji 2, musisz otworzyć terminal PowerShell i uruchomić polecenie.

Naciśnij klawisz „Windows” i wpisz „Powershell”.

Pozycja „Powershell” w menu Start
(duży podgląd)

W terminalu programu PowerShell możesz sprawdzić, którą wersję WSL masz, wykonując wsl --list --verbose .

Robienie pełnej listy wszystkich instancji WSL uruchomionych z poziomu Powershell
(duży podgląd)

Jeśli pokazujesz wersję 1, musisz wykonać --set-version i określić nazwę instancji (Ubuntu) oraz żądaną wersję (2).

 wsl --set-version Ubuntu 2 
Ustawianie wersji WSL na wersję 2 za pomocą Powershell
(duży podgląd)

To trochę potrwa, w zależności od tego, ile mięsa ma twoja maszyna. Mój wziął „kilka minut” dawania lub brania. Kiedy to zrobisz, będziesz w najnowszej i najlepszej wersji WSL.

To twój mózg w systemie Linux… w systemie Windows.

Linux to nie Windows. WSL nie jest monitem bash w systemie operacyjnym Windows. Jest to pełny system operacyjny z własną strukturą folderów i zainstalowanymi aplikacjami. Jeśli zainstalujesz Node za pomocą instalatora Windows, wpisanie node w Linuksie zakończy się niepowodzeniem, ponieważ Node nie jest zainstalowany w Linuksie. Jest zainstalowany w systemie Windows.

Prawdziwa magia WSL polega jednak na tym, że bezproblemowo łączy systemy Windows i Linux, dzięki czemu są one widoczne na twoim komputerze jako jeden system plików.

Nawigacja w plikach i folderach

Domyślnie terminal Ubuntu przenosi Cię do katalogu domowego Linuksa (lub /home/your-user-name ). Możesz przejść na stronę Windows, przechodząc do /mnt/c .

Terminal Ubuntu z wyszczególnioną zawartością dysku C
(duży podgląd)

Zwróć uwagę, że niektóre uprawnienia są tutaj odmawiane. Musiałbym kliknąć prawym przyciskiem myszy ikonę Ubuntu i kliknąć „Uruchom jako administrator”, aby uzyskać dostęp do tych plików. W ten sposób system Windows podwyższa uprawnienia. W systemie Windows nie ma sudo.

Uruchamianie aplikacji

Możesz uruchomić dowolną aplikację Windows z terminala Ubuntu. Na przykład mogę otworzyć Eksploratora Windows z terminala Unbuntu.

Eksplorator Windows i terminal Ubuntu
(duży podgląd)

Działa to również w odwrotnej kolejności. Możesz uruchomić dowolną aplikację zainstalowaną po stronie Linuksa. Tutaj uruchamiam „fortunę” zainstalowaną w Linuksie z wiersza poleceń Windows. (Ponieważ nie jest to poprawna instalacja Linuksa bez przypadkowych, bezsensownych fortun.)

Wiersz poleceń systemu Windows wykonujący linuksowy program „fortune”
(duży podgląd)

Dwa różne systemy operacyjne. Dwa różne systemy plików. Dwa różne zestawy zainstalowanych aplikacji. Widzisz, jak to może być mylące?

Aby wszystko było proste, zalecam instalowanie wszystkich plików programistycznych i narzędzi JavaScript po stronie Linuksa. To powiedziawszy, możliwość poruszania się między systemami Windows i Linux oraz uzyskiwania dostępu do plików z obu systemów to podstawowa magia WSL. Nie zapomnij o tym, ponieważ to właśnie sprawia, że ​​cała ta konfiguracja jest lepsza niż tylko standardowe urządzenie z Linuksem.

Konfigurowanie środowiska programistycznego

Od tego momentu przedstawię wam listę poglądów na temat tego, co uważam za zabójczą konfigurację Linuksa w systemie Windows. Pamiętaj tylko: moje opinie są właśnie takie. Opinie . Tak się składa, że ​​tak jak wszystkie moje opinie, są one w 100% poprawne.

Uzyskanie lepszego terminala

Tak, masz terminal po zainstalowaniu Ubuntu. W rzeczywistości jest to konsola Windows podłączona do twojej dystrybucji Linuksa. To nie jest zła konsola. Możesz zmienić jego rozmiar, włączyć kopiowanie/wklejanie (w ustawieniach). Ale nie możesz robić takich rzeczy jak zakładki lub otwierać nowe okna. Podobnie jak wiele osób używa zastępczych programów terminalowych na Macu (ja używam Hyper), istnieją również inne opcje dla systemu Windows. Lista Awesome WSL na Github zawiera dość wyczerpującą listę.

To wszystko są dobre emulatory, ale jest nowa opcja tworzona przez ludzi, którzy dość dobrze znają system Windows.

Microsoft pracuje nad nową aplikacją o nazwie „Windows Terminal”.

Element Windows Terminal w Sklepie Windows
(duży podgląd)

Terminal Windows można zainstalować ze Sklepu Windows i jest on obecnie w trybie podglądu. Używam go od dłuższego czasu i ma wystarczająco dużo funkcji i jest wystarczająco stabilny, abym mógł go z pełnym poparciem.

Nowy terminal Windows oferuje pełny interfejs kart, kopiowanie/wklejanie, wiele profili, przezroczyste tła, obrazy tła — nawet przezroczyste obrazy tła. To dobry dzień, jeśli chcesz dostosować swój terminal, a ja przybyłem, aby wygrać ten wyścig.

Oto mój obecny terminal. Omówimy tutaj niektóre z ważnych poprawek.

Obecny terminal autora: ciemnoniebieskie tło z rysunkową planetą w prawym dolnym rogu. Zielony i biały tekst.
(duży podgląd)

Terminal Windows jest dość konfigurowalny. Kliknięcie strzałki „ ” w lewym górnym rogu (obok znaku „ + ”) daje dostęp do „Ustawienia”. Spowoduje to otwarcie pliku JSON.

Opraw Kopiuj/Wklej

Na górze pliku znajdują się wszystkie powiązania klawiszy. Pierwszą rzeczą, którą zrobiłem, było mapowanie „kopiuj” do Ctrl + C i wklejanie do Ctrl + V . Jak inaczej mam zamiar skopiować i wkleić polecenia z przepełnienia stosu, których nie rozumiem?

 { "command": "copy", "keys": ["ctrl+c"] }, { "command": "paste", "keys": ["ctrl+v"] },

Problem polega na tym, że Ctrl + C jest już zmapowane na SIGINT lub polecenie przerwania/zabicia w systemie Linux. Istnieje wiele terminali dla systemu Windows, które obsługują to, mapując odpowiednio Kopiuj/Wklej na Ctrl + Shift + C i Ctrl + Shift + V. Problem polega na tym, że kopiuj/wklej to Ctrl + C / Ctrl + V w każdym innym miejscu w systemie Windows. Po prostu naciskałem Ctrl + C w terminalu w kółko, próbując kopiować rzeczy. Nie mogłem przestać tego robić.

Terminal Windows obsługuje to inaczej. Jeśli masz podświetlony tekst i naciśniesz Ctrl + C , skopiuje tekst. Jeśli jest uruchomiony proces, nadal wysyła polecenie SIGINT i przerywa go. Oznacza to, że możesz bezpiecznie mapować Ctrl + C / Ctrl + V na kopiowanie/wklejanie w terminalu Windows i nie będzie to zakłócać możliwości przerywania procesów.

Kto by pomyślał, że kopiowanie/wklejanie może spowodować tyle bólu serca?

Zmień domyślny profil

Profil domyślny pojawia się po otwarciu nowej karty. Domyślnie jest to Powershell. Będziesz chciał przewinąć w dół i znaleźć profil Linuksa. To jest ten, który otwiera wsl.exe -d Ubuntu . Skopiuj jego identyfikator GUID i wklej go do ustawienia defaultProfile .

Przeniosłem te dwa ustawienia, aby znajdowały się tuż obok siebie, aby łatwiej było je zobaczyć:

Domyślny profil terminala podświetlony w pliku settings.json
(duży podgląd)

Ustaw tło

Podoba mi się, że moje tło ma ciemny, jednolity kolor z płaskim logo w prawym rogu. Robię to, ponieważ chcę, aby logo było jasne i widoczne, ale nie przeszkadzało w tekście. Ten zrobiłem sam, ale w Simple Desktops jest świetna kolekcja płaskich obrazów.

Tło jest ustawiane za pomocą właściwości backgroundImage :

 "backgroundImage": "c:/Users/YourUserName/Pictures/earth.png" 
Niebieski kwadrat z rysunkową planetą w prawym dolnym rogu
(duży podgląd)

Zauważysz również ustawienie o nazwie „akryl”. To umożliwia dostosowanie krycia tła. Jeśli masz jednolity kolor tła, jest to całkiem proste.

 "background": "#336699", "useAcrylic": true, "acrylicOpacity": 0.5 
Terminal z lekko przezroczystym tłem
(duży podgląd)

Możesz to zrobić również z obrazem tła, łącząc ustawienie arcylicOpacity z backgroundImageOpacity :

 "backgroundImage": "c:/Users/username/Pictures/earth-and-stars.png", "useAcrylic": true, "acrylicOpacity": 0.5 
Terminal z przezroczystym obrazem i przezroczystym tłem
(duży podgląd)

W moim motywie przezroczystość sprawia, że ​​wszystko wygląda na wyciszone, więc useAcrylic na false .

Zmień czcionkę

Zespół tworzący Terminal Windows pracuje również nad nową czcionką o nazwie „Cascadia Code”. Nie jest dostępny w momencie pisania tego tekstu, więc zamiast tego otrzymujesz domyślną czcionkę systemu Windows.

Domyślną czcionką w terminalu Windows jest "Konsola". Jest to ta sama czcionka, której używa wiersz poleceń systemu Windows. Jeśli chcesz tego prawdziwego uczucia Ubuntu, Chris Hoffman wskazuje, w jaki sposób możesz zainstalować oficjalną czcionkę Ubuntu Mono.

Oto przed i po, dzięki czemu możesz zobaczyć różnicę:

 "fontFace": "Ubuntu Mono" 
Porównanie obok siebie czcionek Consolas i Unbuntu Mono w terminalu
(duży podgląd)

Wyglądają dość podobnie; główna różnica polega na rozstawieniu Ubuntu Mono, co sprawia, że ​​terminal jest nieco ciaśniejszy i czystszy.

Schematy kolorów

Wszystkie schematy kolorów znajdują się na dole pliku ustawień. Skopiowałem schemat kolorów „Campbell” jako linię bazową. Staram się dopasowywać kolory do ich nazw, ale nie boję się też zbuntować. Zmapuję „#ffffff” na „niebieski” — nawet mnie to nie obchodzi.

Ustawienia schematu kolorów z pliku settings.json
(duży podgląd)

Jeśli podoba Ci się ten konkretny schemat, który nazwałem „Ziemia”, ułożyłem to w całość, dzięki czemu nie musisz ręcznie kopiować całego tego bałaganu ze zrzutu ekranu.

Uwaga : podglądy kolorów są dostępne dzięki rozszerzeniu „Podświetlenie kolorów” dla VS Code.

Zmień domyślny katalog początkowy

Domyślnie profil WSL przenosi Cię do katalogu domowego po stronie Windows. W oparciu o konfigurację, którą zalecam w tym artykule, lepiej byłoby zamiast tego umieścić go w folderze home systemu Linux. Aby to zrobić, zmień ustawienie startingDirectory w swoim profilu „Ubuntu”:

 "startingDirectory": "\\\\wsl$\\Ubuntu\\home\\burkeholland"

Zwróć uwagę na ścieżkę tam. Możesz użyć tej ścieżki (bez dodatkowych ukośników ucieczki), aby uzyskać dostęp do WSL z wiersza poleceń systemu Windows.

Polecenie „dir” uruchamiane w katalogu domowym systemu Linux z wiersza poleceń systemu Windows
(duży podgląd)

Zainstaluj Zsh/Oh-My-Zsh

Jeśli nigdy wcześniej nie używałeś Zsh i Oh-My-Zsh, czeka Cię prawdziwa uczta. Zsh (lub „Z Shell”) to zastępcza powłoka dla systemu Linux. Rozszerza podstawowe możliwości Bash, w tym implikowane przełączanie katalogów (nie trzeba wpisywać cd ), obsługę lepszych motywów, lepsze monity i wiele więcej.

Aby zainstalować Zsh, pobierz go za pomocą menedżera pakietów apt, który wychodzi z pudełka z instalacją Linuksa:

 sudo apt install zsh

Zainstaluj oh-my-zsh za pomocą curl. Oh-my-zsh to zestaw konfiguracji dla zsh, które jeszcze bardziej poprawiają działanie powłoki dzięki wtyczkom, motywom i niezliczonej liczbie skrótów klawiaturowych.

 sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

Następnie zapyta, czy chcesz zmienić domyślną powłokę na Zsh. Tak, więc odpowiedz twierdząco, a teraz działasz z Zsh i Oh-My-Zsh.

Terminal z pytaniem, czy chcesz zmienić domyślną powłokę
(duży podgląd)

Zauważysz, że monit jest teraz znacznie czystszy. Możesz zmienić wygląd tego monitu, zmieniając motyw w pliku ~/.zshrc .

Otwórz go za pomocą nano , co jest trochę jak VIM, ale możesz edytować rzeczy i wyjść, kiedy zajdzie taka potrzeba.

 nano ~/.zshrc

Zmień linię, która ustawia motyw. Nad nim znajduje się adres URL z całą listą motywów. Myślę, że ta „w chmurze” jest fajna. I słodki.

Motyw „chmury” ustawiany w pliku zshrc
(duży podgląd)

Aby pobrać zmiany w .zshrc , musisz go pozyskać:

 source ~/.zshrc 
Monit motywu „chmura”
(duży podgląd)

Uwaga : jeśli wybierzesz motyw taki jak „agnoster”, który wymaga glifów, będziesz potrzebować wersji Ubuntu Mono z zasilaniem, która ma… glify. W przeciwnym razie twój terminal będzie po prostu pełen dziwnych postaci, jakbyś zmiażdżył twarz na klawiaturze. Nerd Fonts oferuje taki, który wydaje się działać całkiem dobrze.

Teraz możesz robić takie rzeczy, jak zmiana katalogów, po prostu wprowadzając nazwę katalogu. cd nie jest wymagana. Chcesz wrócić do katalogu? Po prostu zrób .. Nie musisz nawet wpisywać całej nazwy katalogu, wystarczy wpisać kilka pierwszych liter i nacisnąć tabulator. Zsh wyświetli listę wszystkich plików/katalogów, które pasują do Twojego wyszukiwania i możesz je przeglądać.

Terminal z zaznaczoną jedną z wielu ścieżek
(duży podgląd)

Instalowanie węzła

Jako programista sieciowy prawdopodobnie będziesz chciał zainstalować Node. Przypuszczam, że nie musisz instalować Node, aby tworzyć strony internetowe, ale na pewno tak jest w 2019 roku!

Twoim pierwszym odruchem może być zainstalowanie node z apt , co możesz zrobić, ale żałujesz tego z dwóch powodów:

  1. Wersja Node na apt jest żałośnie przestarzała;
  2. Powinieneś zainstalować Node z menedżerem wersji, aby nie napotkać problemów z uprawnieniami.

Najlepszym sposobem rozwiązania obu tych problemów jest zainstalowanie nvm (Node Version Manager). Ponieważ zainstalowałeś zsh , możesz po prostu dodać wtyczkę nvm do pliku zshrc, a zsh zajmie się resztą.

Najpierw zainstaluj wtyczkę, klonując w repozytorium zsh-nvm . (Nie martw się, Git jest standardowo instalowany w systemie Ubuntu.)

 git clone https://github.com/lukechilds/zsh-nvm ~/.oh-my-zsh/custom/plugins/zsh-nvm

Następnie dodaj go jako wtyczkę w pliku ~/.zshrc .

 `nano ~/.zshrc` plugins (zsh-nvm git) 
Plik zshrc z dodaną wtyczką zsh-vnm
(duży podgląd)

Pamiętaj, aby ponownie pobrać plik zshrc za pomocą source ~/.zshrc , a zobaczysz instalowany nvm.

Terminal pokazujący postęp instalacji nvm
(duży podgląd)

Teraz możesz zainstalować node z nvm. Ułatwia instalację wielu obok siebie wersji węzła i bezproblemowe przełączanie się między nimi. Ponadto brak błędów uprawnień podczas instalacji globalnych npm!

 nvm install --lts

Polecam to zamiast standardowej instalacji nvm, ponieważ wtyczka daje możliwość łatwej aktualizacji nvm. Jest to trochę uciążliwe przy standardowej instalacji „zwinięcia”. To jedno polecenie z wtyczką.

 nvm upgrade

Korzystaj z automatycznych sugestii

Jedną z moich ulubionych wtyczek do zsh jest zsh-autosuggestions. Zapamiętuje rzeczy, które wpisałeś wcześniej w terminalu, a następnie rozpoznaje je, gdy zaczniesz je ponownie wpisywać, a także „automatycznie sugeruje” linię, której możesz potrzebować. Ta wtyczka przydała się więcej razy, niż pamiętam — szczególnie jeśli chodzi o długie polecenia CLI, których używałem w przeszłości, ale których nigdy nie pamiętam.

Sklonuj repozytorium do folderu rozszerzeń zsh:

 git clone https://github.com/zsh-users/zsh-autosuggestions ~/.oh-my-zsh/custom/plugins/zsh-autosuggestions

Następnie dodaj go do swoich wtyczek zsh i pobierz plik zshrc:

 nano ~/.zshrc # In the .zshrc file plugins(zsh-nvm zsh-autosuggestions git) source ~/.zshrc

Wtyczka odczytuje historię zsh, więc zacznij wpisywać polecenie, które wpisałeś wcześniej i obserwuj magię. Spróbuj wpisać pierwszą część tego długiego polecenia klonowania powyżej.

Terminal pokazujący autosugestie zsh, które automatycznie uzupełniają polecenie git clone
(duży podgląd)

Jeśli naciśniesz , automatycznie uzupełni polecenie. Jeśli będziesz naciskać ↹ , przejdziesz kolejno przez dowolne polecenia w Twojej historii, które mogą być dopasowane.

Ważne skróty klawiaturowe

Jest kilka skrótów terminalowych, z których cały czas korzystam. Odnajduję to we wszystkich moich narzędziach — w tym w VS Code. Próba nauczenia się wszystkich skrótów to strata czasu, ponieważ nie użyjesz ich na tyle, aby je zapamiętać.

Oto kilka, z których regularnie korzystam:

Skrót do terminala Co to robi?
Ctrl + L Spowoduje to wyczyszczenie terminala i powrót na górę. To odpowiednik wpisania „wyczyść”.
Ctrl + U To czyści tylko bieżącą linię.
Ctrl + A Przesyła kursor na początek wiersza poleceń.
Ctrl + E Przejdź na koniec wiersza.
Ctrl + K Usuń wszystkie znaki za kursorem.

Otóż ​​to! Wszystko inne prawdopodobnie się nauczyłem, a potem zapomniałem, ponieważ nigdy nie ma to żadnego pożytku.

Konfiguracja Git (Hub/Lab/Whatevs)

Git jest dostępny na Ubuntu, więc nie jest wymagana instalacja. Możesz postępować zgodnie z instrukcjami wybranego dostawcy hostingu kontroli źródła, aby utworzyć i uruchomić klucze ssh.

Zwróć uwagę, że w instrukcjach Github mówi ci, aby użyć narzędzia „kopiuj”, aby skopiować klucz ssh. Ubuntu ma polecenie „xcopy”, ale tutaj nie zadziała, ponieważ nie ma współdziałania między Linuksem a Windowsem w zakresie schowka.

Zamiast tego możesz po prostu użyć pliku wykonywalnego schowka systemu Windows i wywołać go bezpośrednio z terminala. Musisz najpierw pobrać tekst za pomocą cat , a następnie przesłać go do schowka Windows.

 cat ~/.ssh/id_rsa.pub | clip.exe

Dokumentacja Github każe się upewnić, że ssh-agent jest uruchomiony. To nie jest. Zobaczysz to, gdy spróbujesz dodać swój klucz do agenta:

Terminal pokazujący, że agent ssh nie działa
(duży podgląd)

Możesz uruchomić agenta, ale przy następnym ponownym uruchomieniu systemu Windows lub zatrzymaniu WSL, będziesz musiał uruchomić go ponownie. Dzieje się tak, ponieważ w WSL nie ma systemu inicjowania. Nie ma żadnego systemd ani innego procesu, który uruchamiałby wszystkie Twoje usługi po uruchomieniu WSL. WSL jest nadal w wersji zapoznawczej, a zespół pracuje nad rozwiązaniem tego problemu.

W międzyczasie możesz wierzyć lub nie, ale do tego też jest wtyczka zsh. Nazywa się ssh-agent i jest instalowany z oh-my-zsh, więc wszystko, co musisz zrobić, to odwołać się do niego w pliku .zshrc .

 zsh-nvm zsh-autosuggestions ssh-agent git

Spowoduje to automatyczne uruchomienie ssh-agent, jeśli nie jest on uruchomiony przy pierwszym uruchomieniu WSL. Minusem jest to, że będzie prosić o hasło za każdym razem, gdy WSL zostanie uruchomiony od nowa. Oznacza to zasadniczo za każdym razem, gdy ponownie uruchamiasz komputer.

Terminal monitujący o hasło do klucza rsa
(duży podgląd)

Kod VS i WSL

WSL nie ma GUI, więc nie można zainstalować narzędzia wizualnego, takiego jak VS Code. To musi być zainstalowane po stronie Windows. Stanowi to problem, ponieważ masz program działający po stronie Windows, który uzyskuje dostęp do plików po stronie Linuksa, co może skutkować wszystkimi dziwactwami i problemami z „odmową dostępu”. Jako ogólna zasada Microsoft zaleca, aby nie zmieniać plików po stronie WSL za pomocą programów Windows.

Aby rozwiązać ten problem, istnieje rozszerzenie dla VS Code o nazwie „Remote WSL”. To rozszerzenie zostało stworzone przez Microsoft i umożliwia programowanie w ramach WSL, ale z wnętrza VS Code.

Po zainstalowaniu rozszerzenia możesz dołączyć VS Code bezpośrednio po stronie Ubuntu, otwierając paletę poleceń ( Ctrl + Shift + P ) i wybierz „Remote-WSL: Nowe okno”.

VS Code z podświetlonym poleceniem „Remote WSL: New Window” w palecie poleceń
(duży podgląd)

To otwiera nowe wystąpienie VS Code, które pozwala pracować tak, jakbyś był w pełni po stronie Linuksa. Wykonanie „Plik / Otwórz” przegląda system plików Ubuntu zamiast systemu Windows.

Widok VS Code „Otwórz plik”
(duży podgląd)

Zintegrowany terminal w VS Code otwiera pięknie dostosowaną konfigurację zsh. Wszystko „działa” tak, jak powinno, gdy masz zainstalowane rozszerzenie Remote WSL.

Jeśli otworzysz kod z terminala za pomocą code . , VS Code automatycznie wykryje, że został otwarty z WSL i automatycznie dołączy zdalne rozszerzenie WSL.

Rozszerzenia kodu VS ze zdalnym WSL

Rozszerzenie Remote WSL dla VS Code działa, konfigurując mały serwer po stronie systemu Linux, a następnie łącząc się z tym z VS Code po stronie systemu Windows. W takim przypadku rozszerzenia, które zainstalowałeś w VS Code, nie pojawią się automatycznie po otwarciu projektu z WSL.

Na przykład mam otwarty projekt Vue w VS Code. Mimo że mam zainstalowane wszystkie odpowiednie rozszerzenia Vue do podświetlania składni, formatowania i tym podobnych, VS Code zachowuje się tak, jakby nigdy wcześniej nie widział pliku .vue .

Plik .vue otwarty w programie VS Code bez podświetlania składni
(duży podgląd)

Wszystkie zainstalowane rozszerzenia można włączyć w WSL. Po prostu znajdź żądane rozszerzenie w WSL i kliknij przycisk „Zainstaluj w WSL”.

Strona docelowa rozszerzenia Vetur VS Code w VS Code
(duży podgląd)

Wszystkie rozszerzenia zainstalowane w WSL pojawią się we własnej sekcji w widoku Eksploratora rozszerzeń. Jeśli masz wiele rozszerzeń, instalowanie każdego z nich z osobna może być nieco denerwujące. Jeśli chcesz po prostu zainstalować każde rozszerzenie, które masz w WSL, kliknij małą ikonę pobierania w chmurze u góry sekcji „Lokalne — zainstalowane”.

Widok rozszerzeń w programie VS Code z podświetloną ikoną instalacji wszystkich rozszerzeń w WSL
(duży podgląd)

Jak skonfigurować katalogi deweloperów

Jest to już artykuł z opiniami, więc tutaj nie pytałeś o to, jak moim zdaniem powinieneś ustrukturyzować swoje projekty w swoim systemie plików.

Wszystkie moje projekty trzymam po stronie Linuksa. Nie umieszczam swoich projektów w „Moich dokumentach”, a potem próbuję pracować z nimi w WSL. Mój mózg sobie z tym nie poradzi.

Tworzę folder o nazwie /dev , który umieszczam w katalogu głównym mojego folderu /home w systemie Linux. Wewnątrz tego folderu tworzę kolejny, który ma taką samą nazwę jak moje repozytorium Github: /burkeholland . W tym folderze idą wszystkie moje projekty — nawet te, które nie są przesyłane na Github.

Jeśli sklonuję repozytorium z innego konta Github (np. „microsoft”), utworzę nowy folder w „dev” o nazwie /microsoft . Następnie klonuję repozytorium do znajdującego się w nim folderu.

Zasadniczo naśladuję tę samą strukturę, co kontrola źródła na moim komputerze lokalnym. O wiele łatwiej jest mi wytłumaczyć, gdzie znajdują się projekty i do jakich repozytoriów są one dołączone, tylko ze względu na ich lokalizację. To proste, ale bardzo skutecznie pomaga mi zorganizować wszystko. I potrzebuję wszelkiej pomocy, jaką mogę uzyskać.

Autorzy opiniowali strukturę folderów wymienioną w terminalu
(duży podgląd)

Przeglądanie plików w Eksploratorze Windows

Są chwile, kiedy trzeba dostać się do pliku w Linuksie od strony Windows. Najpiękniejszą rzeczą w WSL jest to, że nadal możesz to zrobić.

Jednym ze sposobów jest dostęp do WSL, tak jak do zmapowanego dysku. Uzyskaj do niego dostęp za pomocą \\wsl$ bezpośrednio z paska eksploratora:

 \\wsl$ 
Eksplorator Windows instalacja Ubuntu jako zamontowany katalog
(duży podgląd)

Możesz to zrobić z wielu różnych powodów. Na przykład właśnie dzisiaj potrzebowałem rozszerzenia do Chrome, którego nie ma w sklepie internetowym. Więc sklonowałem repozytorium w WSL, a następnie przeszedłem do niego jako „rozpakowane rozszerzenie” i załadowałem je do Edge.

Jedną z rzeczy, które robię z pewną częstotliwością w Linuksie, jest otwieranie katalogu zawierającego plik bezpośrednio z terminala. Możesz to zrobić również w WSL, bezpośrednio wywołując explorer.exe . Na przykład to polecenie otwiera bieżący katalog w Eksploratorze Windows.

 $ explorer.exe . 
GIF przedstawiający otwieranie eksploratora Windows w bieżącym katalogu z terminala

To polecenie jest jednak trochę kłopotliwe. W systemie Linux jest po prostu open . . Możemy stworzyć tę samą magię, tworząc alias w ~/.zshrc .

 alias open="explorer.exe"

Doker

Kiedy powiedziałem, że wszystkie narzędzia powinny być po stronie Linuksa, miałem to na myśli. Obejmuje to Dockera.

To tutaj guma naprawdę zaczyna stykać się z drogą. Potrzebujemy tutaj Dockera działającego w systemie Linux działającym w systemie Windows. To trochę jak rosyjska lalka gniazdująca, kiedy piszesz to w poście na blogu. W rzeczywistości jest to całkiem proste.

Potrzebna będzie poprawna wersja Dockera dla systemu Windows. W chwili pisania tego tekstu jest to WSL 2 Tech Preview.

Po uruchomieniu instalator zapyta, czy chcesz używać kontenerów Windows zamiast kontenerów Linux. Zdecydowanie tak. W przeciwnym razie nie będziesz mieć możliwości uruchomienia Dockera w WSL.

Ekran instalacji Dockera z zaznaczoną opcją „Użyj kontenerów systemu Windows”
(duży podgląd)

Możesz teraz włączyć Docker w WSL, klikając element w zasobniku systemowym i wybierając „WSL 2 Tech Preview”:

Opcja podglądu technicznego WSL2 w menu kontekstowym Docker Daemon
(duży podgląd)

Po uruchomieniu usługi możesz używać Dockera w ramach WSL tak, jak tego oczekujesz. Uruchamianie Dockera w WSL zapewnia całkiem duży wzrost wydajności, a także zwiększenie czasu zimnego startu w kontenerach.

Czy mogę również zalecić zainstalowanie rozszerzenia Docker dla VS Code? Umieszcza interfejs wizualny w konfiguracji platformy Docker i ogólnie ułatwia pracę z platformą Docker, ponieważ nie musisz pamiętać wszystkich tych flag i opcji wiersza polecenia.

Uzyskaj więcej Bash w systemie Windows

W tym momencie powinieneś dowiedzieć się, jak umieścić Bash w systemie Windows i jak to działa, gdy już go tam znajdziesz. Możesz dostosowywać swój terminal w nieskończoność i jest wiele różnych programów rad, które możesz dodać, aby robić takie rzeczy, jak automatyczne ustawianie zmiennych PATH, tworzenie aliasów, umieszczanie krowy ASCII w terminalu i wiele więcej.

Uruchamianie Bash w systemie Windows otworzyło dla mnie zupełnie nowy wszechświat. Potrafię łączyć Windows, który kocham za stronę produktywności, oraz Linux, na którym polegam jako programista. Co najlepsze, mogę teraz tworzyć aplikacje na obie platformy na jednej maszynie.

Dalsza lektura

Możesz przeczytać więcej o Bash w systemie Windows tutaj:

  • „Instrukcja instalacji podsystemu Windows dla systemu Linux w systemie Windows 10”, Microsoft Docs
  • „Jak zainstalować i używać powłoki Bash w systemie Windows 10”, Chris Hoffman, How-To Geek
  • „Udostępnianie SSH za pomocą WSL”, Drew Wilson
  • „Zaszalej z podsystemem okien dla systemu Linux”, Brian Ketelsen
  • „Wszystko, co możesz zrobić z nową powłoką Bash w systemie Windows 10”, Chris Hoffman, How-To Geek

Specjalne podziękowania dla Briana Ketelsena, Matta Hernandeza, Richa Turnera i Craiga Loewena za ich cierpliwość, pomoc i wskazówki dotyczące tego artykułu.