# 伪程序猿的PowerShell Setup

By [ptime](https://paragraph.com/@ptime) · 2021-12-13

---

公司配备新PC电脑，要重新设置好些软件，立马跑返个靓仔的Power Shell先。作为一名伪程序猿的立场就系--所谓**唔打得都要看得**。

![](https://storage.googleapis.com/papyrus_images/3c66215cfd7f6ada4521f2e82674ac87cffa7ba24ccabe797871cbc5ff6e06d9.png)

Microsoft Store 下载 Windows Terminal与PowerShell

开启Windows Terminal 点设置，启动面板-默认配置文件选择“PowerShell”，保存

iwr -useb [get.scoop.sh](http://get.scoop.sh/) | iex

scoop install curl sudo jq neovim gcc z fzf

winget install -e --id Git.Git

Install-Module posh-git -Scope CurrentUser -Force

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

Install-Module -Name Terminal-Icons -Repository PSGallery -Force

Install-Module -Name PSReadLine -AllowPrerelease -Scope CurrentUser -Force -SkipPublisherCheck

Install-Module -Name z -Force

Install-Module -Name PSFzf -Scope CurrentUser -Force

nvim $[PROFILE.CurrentUserCurrentHost](http://profile.currentusercurrenthost/)

`. $env:USERPROFILE\.config\powershell\user_profile.ps1`

nvim .config\\powershell\\party.omp.json

    {
      "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json",
      "final_space": false,
      "osc99": true,
      "blocks": [
        {
          "type": "prompt",
          "alignment": "left",
          "segments": [
            {
             "type": "shell",
              "style": "diamond",
              "leading_diamond": "╭─",
              "trailing_diamond": "",
              "foreground": "#ffffff",
              "background": "#0077c2",
              "properties": {
              }
            },
            {
              "type": "root",
              "style": "diamond",
              "leading_diamond": "",
              "trailing_diamond": "",
              "foreground": "#FFFB38",
              "background": "#ef5350",
              "properties": {
                "root_icon": "\uf292",
                "prefix": "<parentBackground>\uE0B0</> "
              }
            },
            {
              "type": "path",
              "style": "powerline",
              "powerline_symbol": "\uE0B0",
              "foreground": "#E4E4E4",
              "background": "#444444",
              "properties": {
                "style": "full",
                "enable_hyperlink": true
              }
            },
            {
              "type": "git",
              "style": "powerline",
              "powerline_symbol": "\uE0B0",
              "foreground": "#011627",
              "background": "#FFFB38",
              "background_templates": [
                "{{ if or (.Working.Changed) (.Staging.Changed) }}#ffeb95{{ end }}",
                "{{ if and (gt .Ahead 0) (gt .Behind 0) }}#c5e478{{ end }}",
                "{{ if gt .Ahead 0 }}#C792EA{{ end }}",
                "{{ if gt .Behind 0 }}#C792EA{{ end }}"
              ],
              "properties": {
                "branch_icon": "\ue725 ",
                "fetch_status": true,
                "fetch_upstream_icon": true,
                "template": "{{ .HEAD }} {{ if .Working.Changed }}{{ .Working.String }}{{ end }}{{ if and (.Working.Changed) (.Staging.Changed) }} |{{ end }}{{ if .Staging.Changed }}<#ef5350> \uF046 {{ .Staging.String }}</>{{ end }}"
              }
            }
          ]
        },
        {
          "type": "prompt",
          "alignment": "right",
          "segments": [
            {
              "type": "node",
              "style": "diamond",
              "leading_diamond": " \uE0B6",
              "trailing_diamond": "\uE0B4",
              "foreground": "#3C873A",
              "background": "#303030",
              "properties": {
                "prefix": "\uE718 ",
                "postfix": "",
                "display_package_manager": true,
                "yarn_icon": " <#348cba></>",
                "npm_icon": " <#cc3a3a></> "
              }
            },
            {
              "type": "time",
              "style": "diamond",
              "invert_powerline": true,
              "leading_diamond": " \uE0B6",
              "trailing_diamond": "\uE0B4",
              "background": "#40c4ff",
              "foreground": "#ffffff",
              "properties": {
                "prefix": " \uf5ef ",
                "postfix": " "
            }
            }
          ]
        },
        {
          "type": "prompt",
          "alignment": "left",
          "newline": true,
          "segments": [
            {
              "type": "text",
              "style": "plain",
              "foreground": "#21c7c7",
              "properties": {
                "prefix": "",
                "postfix": "",
                "text": "╰─"
              }
            },
            {
              "type": "exit",
              "style": "plain",
              "foreground": "#e0f8ff",
              "properties": {
                "prefix": "\u276F",
                "display_exit_code": false,
                "always_enabled": true,
                "error_color": "#ef5350"
              }
            }
          ]
        }
      ]
    } 
    

nvim .config/powershell/user\_profile.ps1

    Import-Module posh-git
    Import-Module oh-my-posh
    $omp_config = Join-Path $PSScriptRoot ".\party.omp.json"
    oh-my-posh --init --shell pwsh --config $omp_config | Invoke-Expression
    
    Import-Module -Name Terminal-Icons
    
    # PSReadLine
    Set-PSReadLineOption -EditMode Emacs
    Set-PSReadLineOption -BellStyle None
    Set-PSReadLineKeyHandler -Chord 'Ctrl+d' -Function DeleteChar
    Set-PSReadLineOption -PredictionSource History
    
    # Fzf
    Import-Module PSFzf
    Set-PsFzfOption -PSReadlineChordProvider 'Ctrl+f' -PSReadlineChordReverseHistory 'Ctrl+r'
    
    # Env
    $env:GIT_SSH = "C:\Windows\system32\OpenSSH\ssh.exe"
    
    # Alias
    Set-Alias -Name vim -Value nvim
    Set-Alias ll ls
    Set-Alias g git
    Set-Alias grep findstr
    Set-Alias tig 'D:\party\Git\usr\bin\tig.exe'
    Set-Alias less 'D:\party\Git\usr\bin\less.exe'
    
    # Utilities
    function which ($command) {
      Get-Command -Name $command -ErrorAction SilentlyContinue |
        Select-Object -ExpandProperty Path -ErrorAction SilentlyContinue
    }

---

*Originally published on [ptime](https://paragraph.com/@ptime/powershell-setup)*
