TerminalNarzędzie NR.13 Microsoft słucha i wie, że wiele programistów chce lepszego terminala do systemu Windows. Jak np. korzystałem jak do tej pory z Cmder, który jak pisałem dawno temu był i być może nadal jest wierszem poleceń naszych marzeń.

Pomyśl ile rzeczy robimy dziś w wierszu poleceń. Git, AngularCLR, NPM, a nawet jak pamiętasz są polecenia dla środowiska .NET. 

 

Wiersz poleceń będą zawsze potrzebne i można nawet powiedzieć, że bum na proste aplikację programistyczne z interfejsem się skończył jakieś 5 lat temu. Teraz klep polecenia w wierszu poleceń.

Microsoft wysłucha modlitwy i postanowił wypuścić nowy terminal. Zobaczmy jak możesz go przystosować do pracy.

Zainstaluj Windows Terminal

Najlepiej pobrać go ze sklepu Microsoft

https://www.microsoft.com/en-us/p/windows-terminal-preview

Będziesz zawsze mógł go zaktualizować. Kto wie może w przyszłości sklep Microsoftu przestanie istnieć i będziemy instalować programy w wierszu poleceń przy pomocy Chocolatey

https://chocolatey.org/

A tak na serio, jeśli masz zainstalowane Chocolatey to możesz instalować aplikację na Windows w taki sposób:

choco install microsoft-windows-terminal --pre 

Więcej info : https://chocolatey.org/packages/microsoft-windows-terminal

Pracujesz z Git o to, co musisz zainstalować

Chciałbyś aby praca z Gitem była przyjemna i miała ciekawe ikonki

Nie ma problemu musisz tylko zainstalować odpowiednie moduły do PowerShell-a.

Install-Module posh-git 
Install-Module oh-my-posh

Te dwa moduły sprawią, że będziesz miał podpowiedzi do komend GIT oraz fajny pokaz statusów swojego projektu w folderze.

Aby te moduły działały poprawnie warto mieć wersje PowerShell 6.2.3 lub wyżej. Zawsze może zrobić aktualizację PowerShell tutaj https://github.com/PowerShell/PowerShell

W trakcie instalacji zostaniesz zapytany o to, czy na pewno chcesz te moduły zainstalować. Wybierasz opcję Tak.

Później uruchom "notepad $PROFILE" i dodaj te linijki kodu:

Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Paradox

Ostatnia linijka deklaruje styl PowerShell. Masz do wyboru wiele z innych jak np. Agnoster

https://github.com/agnoster/agnoster-zsh-theme

Fonty do Terminala

Microsoft także wypuścił lekki font "Cascadia Code" stworzony z myślą o programowaniu. Ewentualnie ma on zostać domyślnie dodany do Windows Terminal, ale na razie trzeba tego fonta ściągnąć i zainstalować.

https://github.com/microsoft/cascadia-code

Dlaczego chcesz korzystać z tej czcionki w terminale Windows Terminal? 

O ile Cascadia Code nie ma wszystkich znaków specjalnych czy tam glyphs-ów to posiada wystarczający zakres symboli, aby ten tekst w terminale :

Tekst bez glyphs i GitHub z oh-my-posh

Zamienił się na taki:

Tekst z glyphs i GitHub z oh-my-posh

Oczywiście nie musisz koniecznie korzystać z tej czcionki. Istnieje cała grupa fontów dla programistów jak fontów stworzonych z myślą o terminalach i fajnych symbolach

Znajdziesz je na stronie https://www.nerdfonts.com/

Radzę samemu poszukać i wybrać font, który najbardziej Ci pasuje

Ustawienie fonta

Jeżeli widzisz jakieś kwadraty to odpowiedź jest prosta. Sama instalacja fonta "Cascadia Code" to za mało. Trzeba go jeszcze ustawić.

W Windows Terminal klikasz na ikonkę  'daszka w dół' . Wybierasz opcję "Settings".

git-04.png

Teraz domyślny edytor dla plików .json otworzy ci plik z ustawieniami. Tam możesz zmienić czcionkę / font. Oto jak ja to zrobiłem.

// To view the default settings, hold "alt" while clicking on the "Settings" button.
// For documentation on these settings, see: https://aka.ms/terminal-documentation

{
  "$schema": "https://aka.ms/terminal-profiles-schema",

  "defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",



  "profiles": {
    "defaults": {
      // Put settings here that you want to apply to all profiles
    },
    "list": [
      {
        // Make changes here to the powershell.exe profile
        "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
        "name": "Windows PowerShell",
        "commandline": "powershell.exe",
        "hidden": false,
        "fontFace": "Cascadia Code PL"
        //"fontFace": "BitStreamVeraSansMono Nerd Font Mono"
        //"fontFace": "BigBlue_TerminalPlus NF"
      },
      {
        // Make changes here to the cmd.exe profile
        "guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
        "name": "cmd",
        "commandline": "cmd.exe",
        "hidden": false,
        "fontFace": "Cascadia Code PL"
      },
      {
        "guid": "{c6eaf9f4-32a7-5fdc-b5cf-066e8a4b1e40}",
        "hidden": false,
        "name": "Ubuntu-18.04",
        "source": "Windows.Terminal.Wsl",
        "fontFace": "Cascadia Code PL"
      },
      {
        "guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
        "hidden": false,
        "name": "Azure Cloud Shell",
        "source": "Windows.Terminal.Azure",
        "fontFace": "Cascadia Code PL"
      },
      {
        "guid": "{574e775e-4f2a-5b96-ac1e-a2962a402336}",
        "hidden": false,
        "name": "PowerShell",
        "source": "Windows.Terminal.PowershellCore",
        "fontFace": "Cascadia Code PL"
      }
    ]
  },

  // Add custom color schemes to this array
  "schemes": [],

  // Add any keybinding overrides to this array.
  // To unbind a default keybinding, set the command to "unbound"
  "keybindings": []
}

To wszystko?

Jeszcze dodałem sobie do pliku $Profile funkcje pomocnicze :

function U
{
    param
    (
        [int] $Code
    )
 
    if ((0 -le $Code) -and ($Code -le 0xFFFF))
    {
        return [char] $Code
    }
 
    if ((0x10000 -le $Code) -and ($Code -le 0x10FFFF))
    {
        return [char]::ConvertFromUtf32($Code)
    }
 
    throw "Invalid character code $Code"
}

function ShowCharts
{
    Write-Host "$(U 0xE0B0) $(U 0x00B1) $(U 0xE0A0) $(U 0x27A6) $(U 0x2718) $(U 0x26A1) $(U 0x2699)"
}

function GotoGit
{
    Set-Location d:\github 
}

function Theme1
{
    Set-Theme Paradox
}
function Theme2
{
    Set-Theme darkblood
}

Analogicznie możesz stworzyć swoje funkcję, które później uruchomisz w WindowsTerminal

Teraz twój Windows Terminal jest gotowy do pracy. Konsola PowerShell jest gotowa do pracy z Git