-
Notifications
You must be signed in to change notification settings - Fork 1
/
profile.ps1
105 lines (86 loc) · 2.91 KB
/
profile.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#source completers
Get-ChildItem "$(Split-Path $profile -Parent)\completions\" |
ForEach-Object {
. $_.FullName
}
function import-OrInstallModule([string[]]$module) {
Import-Module -Global $module -ErrorAction SilentlyContinue ||
Install-Module -Name $module -Scope CurrentUser -SkipPublisherCheck -Force &&
Import-Module -Global $module
}
import-OrInstallModule 'CompletionPredictor'
if (Test-Path "~\.vcpkg\") {
. "~\.vcpkg\vcpkg-init.ps1"
Import-Module "~\.vcpkg\scripts\posh-vcpkg\"
}
#region helpers
function Enter-VsDevEnv {
[CmdletBinding()]
param(
[Parameter()]
[switch]$Prerelease,
[Parameter()]
[string]$architecture = "x64"
)
$ErrorActionPreference = 'Stop'
import-OrInstallModule 'VSSetup'
Write-Verbose 'Searching for VC++ instances'
$VSInfo = `
Get-VSSetupInstance -All -Prerelease:$Prerelease `
| Select-VSSetupInstance `
-Latest -Product * `
-Require 'Microsoft.VisualStudio.VC.Ide.Core'
$VSPath = $VSInfo.InstallationPath
switch ($env:PROCESSOR_ARCHITECTURE) {
"amd64" { $hostarch = "x64" }
"x86" { $hostarch = "x86" }
"arm64" { $hostarch = "arm64" }
default { throw "Unknown architecture: $switch" }
}
$devShellModule = "$VSPath\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
Import-Module -Global -Name $devShellModule
Write-Verbose 'Setting up environment variables'
Enter-VsDevShell -VsInstanceId $VSInfo.InstanceId -SkipAutomaticLocation `
-devCmdArguments "-arch=$architecture -host_arch=$hostarch"
Set-Item -Force -path "Env:\Platform" -Value $architecture
remove-Module Microsoft.VisualStudio.DevShell, VSSetup
}
function la { Get-ChildItem @args | Format-Wide }
function which($c) {
$a = get-command $c
switch ($a.CommandType) {
'Alias' { $a.Definition }
'Application' { $a.Path }
'ExternalScript' { $a.Source }
Default { $a }
}
}
function take([string]$path) { mkdir $path ; Set-Location $path }
function reset { [Console]::write("`ec`e]104`a`e[!p`e[?3;4l`e[4l`e>`e[?69l") }
function tabs($tabsize) {
[console]::Write("`e[?25l`e[3g`r`eH")
for ($i = 0; $i -lt [System.Console]::BufferWidth; $i += $tabsize) {
[console]::Write("`e[${tabsize}C`eH")
}
[Console]::write("`r`e[?25h")
}
function Search-Alias([String] $name) {
(get-Alias).DisplayName | Select-String $name
}
#endregion
#region aliases
set-Alias sral search-Alias
Set-Alias grep Select-String
Set-Alias sudo elevate
set-Alias vim "C:\Program Files\Git\usr\bin\vim.exe"
# set-Alias "ping" "Test-NetConnection"
# set-Alias "ipconfig" "Get-NetIPConfiguration"
#endregion
#region keybindings
Set-PSReadLineKeyHandler -Key "Ctrl+f" -Function ForwardWord
Set-PSReadLineKeyHandler -Key "Ctrl+RightArrow" -Function ForwardWord
Set-PSReadLineKeyHandler -key "Ctrl+d" -Function DeleteCharOrExit
<#Set-PSReadLineKeyHandler -Key "UpArrow" -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key "DownArrow" -Function HistorySearchForward #>
set-PSReadLineKeyHandler -Key "tab" -Function MenuComplete
#endregion