Blog: Jezyki programowania i srodowiska programistyczne | Ms visual studio | Systemy microsoft | Powershell | Ms visual studio 2

Visual Studio Code jako zaawansowana alternatywa dla PowerShell ISE – część druga

Visual Studio Code jako zaawansowana alternatywa dla PowerShell ISE – część druga
  • 1 762 views

W poprzednim artykule zaprezentowałem jak skonfigurować podstawowe komponenty by Visual Studio Code działał podobnie do PowerShell ISE. Oczywiście podstawowa funkcjonalność jest przeznaczona dla mniej wymagających użytkowników. Jeśli na co dzień pracujemy z powłoką PowerShell, będziemy chcieli by nasze aplikacje zachowywały się w taki sam sposób.

Udostępnij!

W tym artykule przedstawię konfigurację dwóch funkcjonalności – tworzenie i modyfikację profilu VS Code dla PowerShell oraz tworzenie i konfigurację snippets, czyli fragmentów kodu.

Pierwszym elementem, który skonfigurujemy jest  profil PowerShell dla aplikacji VS Code. Zaawansowani użytkownicy PowerShell wiedzą, że zarówno konsola PowerShell jak też PowerShell ISE, wymagają odrębnych plików dla profilu. Tak samo jest z VS Code.

Test istnienia profilu i jego tworzenie:

Otwieramy nowy plik w VS Code i wpisujemy:

test-path $profile

Otrzymujemy Wartość „False”

$profile | get-member -membertype noteproperty

Tym poleceniem wyświetlamy informację o wszystkich dostępnych profilach. Nas interesuje profil „CurrentUserCurrentHost”, którego lokacja, jak widzimy, znajduje się w katalogu domowym danego użytkownika.

test-path $profile.CurrentUserCurrentHost

Otrzymujemy Wartość „False” – oznacza to, że  profil dla danego użytkownika jeszcze nie istnieje i musimy go stworzyć kolejnym poleceniem:

new-item -path $profile -itemtype file -force

test-path $profile.CurrentUserCurrentHost

Otrzymujemy Wartość „True”.

W moim przypadku mam stworzone pliki profilu dla każdej aplikacji.

Teraz możemy przystąpić do edycji profilu i  wpisujemy kolejne polecenie:

notepad $profile

Edytując profil możemy zindywidualizować nasze środowisko poprzez stworzenie niestandardowych aliasów, zdefiniowanie zmiennych, ustawienie domyślnej lokacji  czy importowanie modułów z niestandardowych lokalizacji. W tym wypadku zaprezentuję dwa dostosowania, które są raczej rzadko wykorzystywane, a w wielu wypadkach okazują się bardzo przydatne.

Pierwsze dostosowanie to kolor komunikatów błędu w terminalu. Domyślny kolor to czerwony   –  na niebieskim tle terminala jest on praktycznie nieczytelny. W otwartym pliku profilu wpisujemy:

$host.PrivateData.ErrorForegroundColor = ‚yellow’

i zapisujemy plik. Restartujemy VS Code. Wpisujemy polecenie, np. Get-ADComputer (w tym wypadku nie mam zainstalowanego modułu do Active Directory) i komunikat błędu wyświetla się na żółto.

Podobnie możemy zmodyfikować kolory dla poleceń: Debug, Error, Progess, Verbose i Warning.

Drugie dostosowanie to możliwość wpisywania poleceń w terminalu od początku wiersza. W przypadku długich ścieżek kursor znajduje się praktycznie z prawej strony ekranu, co może być dosyć kłopotliwe.

Jeśli chcemy zmodyfikować tę opcję, należy ponownie otworzyć w notatniku plik profilu i w nowym wierszu dodać następujący wpis:

function prompt

{

„PS $($executionContext.SessionState.Path.CurrentLocation)`n>”

}

prompt

Po restarcie aplikacji znak zachęty będzie zawsze występował na początku wiersza.

A tak wygląda plik profilu po modyfikacjach.

Drugim elementem jest możliwość korzystania ze snippets, czyli fragmentów kodu. Fragmenty kodu to szablony, które ułatwiają wprowadzanie powtarzających się wzorców kodu, takich jak pętle lub instrukcje warunkowe. W programie VS Code fragmenty są wyświetlane w IntelliSense (Ctrl + Spacja) w połączeniu z innymi sugestiami, a także w dedykowanym selektorze fragmentów (Wstaw fragment w palecie poleceń – skróty klawiszowe „F1” lub „Ctrl+Shift+P”). Istnieje także obsługa uzupełniania tabulatorów. Jeśli nie jest włączona, najłatwiej to zrobić poprzez edycję pliku „settings.json”, który był omawiany w poprzednim artykule. W kolejnej linii dodajemy wiersz:

„editor.tabCompletion”: „on”

W moim wypadku wybrałem opcję „on”, by korzystać z większej funkcjonalności klawisza „Tab”. Zapisujemy plik i restartujemy aplikację.

Każdy fragment jest zdefiniowany pod nazwą, ma prefiks, treść i opis. Prefiks służy do wyzwalania fragmentu kodu, a treść zostanie rozwinięta i wstawiona. Wiele rozszerzeń w witrynie VS Code Marketplace zawiera opcję obsługi fragmentów. Tak jest również w przypadku PowerShell.

Dostęp do snippets zyskujemy korzystając z klawisza „Tab”.

Dostęp do snippets dzięki klawiszowi funkcyjnemu „F1” lub „Ctrl+Shift+P” – wpisujemy insert i wybieramy Insert Snippet lub wybieramy skrót klawiszowy „Ctrl+Alt+J”.

Nie zawsze wbudowane fragmenty kodu będą dla nas wystarczające. W wielu wypadkach będziemy chcieli korzystać z własnych fragmentów kodu. By móc używać tej funkcjonalności, musimy stworzyć nowy plik, do którego dodamy kolejne fragmenty kodu. Klikamy na ikonę Manage -> User Snippets -> New Snippets.

Wpisujemy nazwę dla pliku, np. PowerShell. Plik zostanie zapisany w lokalizacji:

C:\Users\nazwa_użytkownika\AppData\Roaming\Code\User\snippets

W chwili obecnej plik zawiera tylko komentarz. Wstawiamy następujący fragment kodu:

Zapisujemy plik i restartujemy aplikację. Korzystając ze skrótu klawiszowego „Ctrl+Alt+J” , przechodzimy do wstawiania fragmentu kodu, wpisujemy „foreach” i możemy zobaczyć , że mamy teraz dwa fragmenty kodu dla polecenia „foreach”. Nas interesuje „foreach zmodyfikowany snippet”, czyli fragment kodu zdefiniowany powyżej.

Jak widać, fragment kodu jest zgodny z naszym szablonem.

Ręczne tworzenie nowych fragmentów kodu może być dość żmudną czynnością –  dlatego też możemy skorzystać z gotowego rozwiązania. W przeglądarce internetowej otwieramy następującą stronę:

https://gist.github.com/rkeithhill/60eaccf1676cf08dfb6f

Pobieramy skompresowany plik w formacie ZIP. Rozpakowujemy i kopiujemy plik powershell.json do lokalizacji:

C:\Users\nazwa_użytkownika\AppData\Roaming\Code\User\snippets

Restartujemy aplikację. Korzystając ze skrótu klawiszowego „Ctrl+Alt+J”, przechodzimy do wstawiania fragmentu kodu, wpisujemy „foreach” i możemy zobaczyć , że mamy teraz trzy fragmenty kodu dla polecenia „foreach”. Nas interesuje „foreach kod z GitHub Dist”, czyli fragment kodu pochodzący z pliku „powershell.json” (opis „foreach kod z GitHub Dist” został przeze mnie zmodyfikowany w celu zobrazowania zmian).

Podsumowując nasze ćwiczenia, da się zauważyć, że praca z VS Code może być bardzo interesująca, gdyż aplikacja pozwala na wiele modyfikacji, tworząc bardzo zindywidualizowane środowisko. Należy jednak pamiętać, że wszystkie opisane modyfikacje są powiązane z profilem zalogowanego użytkownika. Jeśli zalogujemy się jako inny użytkownik lub zalogujemy się na innym komputerze, nie będziemy mieli dostępu do naszych modyfikacji.  Warto zatem okresowo wykonywać kopie  zapasowe  naszych ustawień.