# Use Cmder's multiline prompt and posh-git. Import-Module "$env:ChocolateyToolsLocation\\Cmder\\vendor\\profile.ps1" # Enable Chocolatey completions. Import-Module "$env:ChocolateyInstall\helpers\chocolateyProfile.psm1" # Set UTF-8 as the character set for pipes and output objects. # https://gist.github.com/xoner/4671514 $OutputEncoding = New-Object -typename System.Text.UTF8Encoding [Console]::OutputEncoding = [Text.UTF8Encoding]::UTF8 # Enable Vi line editing mode. Set-PSReadLineOption -BellStyle None -EditMode Vi # Make C-w backward delete a word. Set-PSReadLineKeyHandler -Chord Ctrl+w -Function BackwardDeleteWord # TODO: Doesn't work with PSReadLine 2.1 # Hoping this gets fixed at some point and will just start working. # Set-PSReadLineKeyHandler -Chord Ctrl+[ -Function ViCommandMode # Workaournd from https://github.com/PowerShell/PSReadLine/issues/906#issuecomment-916847040 Set-PSReadLineKeyHandler -Chord 'Ctrl+Oem4' -Function ViCommandMode # Change cursor shape based on what Vi mode the line editor is in. # Testing and works with PowerShell 5.1 # NOTE: Requires: Install-Module PsReadline -Scope CurrentUser -Force # FIXME: Doesn't work with PSReadLine 2.0 function OnViModeChange { if ($args[0] -eq 'Command') { # Set the cursor to non-blinking block. Write-Host -NoNewLine "$([char]0x1b)[2 q" } else { # Set the cursor to non-blinking line. Write-Host -NoNewLine "$([char]0x1b)[6 q" } } Set-PSReadLineOption -ViModeIndicator Script -ViModeChangeHandler $Function:OnViModeChange # And set the cursor to a non-blinking line on profile load. Write-Host -NoNewLine "$([char]0x1b)[6 q" # Remove these aliases to PowerShell builtins which clobber the actaul exes. Remove-Item alias:curl Remove-Item alias:wget # Allow the VM running WSL2 to access Windows host, setting is not persistent over reboots New-NetFirewallRule -DisplayName "WSL" -Direction Inbound -InterfaceAlias "vEthernet (WSL)" -Action Allow > $null # Allow the VM running WSL2 to access Hyper-V virtual machines, setting is not persistent over reboots Get-NetIPInterface | where {$_.InterfaceAlias -eq 'vEthernet (WSL)' -or $_.InterfaceAlias -eq 'vEthernet (Default Switch)'} | Set-NetIPInterface -Forwarding Enabled