diff --git a/powershell/.config/powershell/Microsoft.PowerShell_profile.ps1 b/powershell/.config/powershell/Microsoft.PowerShell_profile.ps1 deleted file mode 100644 index 1751228..0000000 --- a/powershell/.config/powershell/Microsoft.PowerShell_profile.ps1 +++ /dev/null @@ -1,245 +0,0 @@ -# set PowerShell to UTF-8 -[console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding - -function Clear-Cache { - # add clear cache logic here - Write-Host "Clearing cache..." -ForegroundColor Cyan - - # Clear Windows Prefetch - Write-Host "Clearing Windows Prefetch..." -ForegroundColor Yellow - Remove-Item -Path "$env:SystemRoot\Prefetch\*" -Force -ErrorAction SilentlyContinue - - # Clear Windows Temp - Write-Host "Clearing Windows Temp..." -ForegroundColor Yellow - Remove-Item -Path "$env:SystemRoot\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue - - # Clear User Temp - Write-Host "Clearing User Temp..." -ForegroundColor Yellow - Remove-Item -Path "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue - - # Clear Internet Explorer Cache - Write-Host "Clearing Internet Explorer Cache..." -ForegroundColor Yellow - Remove-Item -Path "$env:LOCALAPPDATA\Microsoft\Windows\INetCache\*" -Recurse -Force -ErrorAction SilentlyContinue - - Write-Host "Cache clearing completed." -ForegroundColor Green -} - -# Utility Functions -function Test-CommandExists { - param($command) - $exists = $null -ne (Get-Command $command -ErrorAction SilentlyContinue) - return $exists -} - -# Editor Configuration -$EDITOR = if (Test-CommandExists nvim) { 'nvim' } -elseif (Test-CommandExists pvim) { 'pvim' } -elseif (Test-CommandExists vim) { 'vim' } -elseif (Test-CommandExists vi) { 'vi' } -elseif (Test-CommandExists code) { 'code' } -elseif (Test-CommandExists notepad++) { 'notepad++' } -elseif (Test-CommandExists sublime_text) { 'sublime_text' } -else { 'notepad' } - -# Quick Access to Editing the Profile -function Edit-Profile { - edit $PROFILE.CurrentUserCurrentHost -} - -function New-File($file) { - "" | Out-File $file -Encoding UTF8 -} - -function Get-RecursiveItems($name) { - Get-ChildItem -recurse -filter "*${name}*" -ErrorAction SilentlyContinue | ForEach-Object { - Write-Output "$($_.FullName)" - } -} - -function Get-PubIP { - (Invoke-WebRequest http://ifconfig.me/ip).Content -} - -function Update-Profile { - & $PROFILE -} - -function Expand-Zip ($file) { - Write-Output("Extracting", $file, "to", $pwd) - $fullFile = Get-ChildItem -Path $pwd -Filter $file | ForEach-Object { $_.FullName } - Expand-Archive -Path $fullFile -DestinationPath $pwd -} - -function Find-String($regex, $dir) { - if ( $dir ) { - Get-ChildItem $dir | Select-String $regex - return - } - $input | Select-String $regex -} - -function Set-String($file, $find, $replace) { - (Get-Content $file).replace("$find", $replace) | Set-Content $file -} - -function Get-InitialRows { - param($Path, $n = 10) - Get-Content $Path -Head $n -} - -function Get-LastRows { - param($Path, $n = 10, [switch]$f = $false) - Get-Content $Path -Tail $n -Wait:$f -} - -function Get-Paths { - $delim = ':' - if ( $IsWindows ) { - $delim = ';' - } - $env:PATH -split ($delim) -} - -function New-Link ($target, $link) { - New-Item -Path $link -ItemType SymbolicLink -Value $target -} - -Set-Alias -Name edit -Value $EDITOR -Set-Alias -Name ep -Value Edit-Profile -Set-Alias tig 'C:\Program Files\Git\usr\bin\tig.exe' -Set-Alias less 'C:\Program Files\Git\usr\bin\less.exe' - -# Enhanced PowerShell Experience -# Enhanced PSReadLine Configuration -$PSReadLineOptions = @{ - EditMode = 'Emacs' - HistoryNoDuplicates = $true - HistorySearchCursorMovesToEnd = $true - PredictionSource = 'History' - PredictionViewStyle = 'ListView' - BellStyle = 'None' - Colors = @{ - Command = '#87CEEB' # SkyBlue (pastel) - Parameter = '#98FB98' # PaleGreen (pastel) - Operator = '#FFB6C1' # LightPink (pastel) - Variable = '#DDA0DD' # Plum (pastel) - String = '#FFDAB9' # PeachPuff (pastel) - Number = '#B0E0E6' # PowderBlue (pastel) - Type = '#F0E68C' # Khaki (pastel) - Comment = '#D3D3D3' # LightGray (pastel) - Keyword = '#8367c7' # Violet (pastel) - Error = '#FF6347' # Tomato (keeping it close to red for visibility) - } -} -Set-PSReadLineOption @PSReadLineOptions - -# Custom key handlers -Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward -Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward -Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete -Set-PSReadLineKeyHandler -Chord 'Ctrl+d' -Function DeleteChar -Set-PSReadLineKeyHandler -Chord 'Ctrl+w' -Function BackwardDeleteWord -Set-PSReadLineKeyHandler -Chord 'Alt+d' -Function DeleteWord -Set-PSReadLineKeyHandler -Chord 'Ctrl+LeftArrow' -Function BackwardWord -Set-PSReadLineKeyHandler -Chord 'Ctrl+RightArrow' -Function ForwardWord -Set-PSReadLineKeyHandler -Chord 'Ctrl+z' -Function Undo -Set-PSReadLineKeyHandler -Chord 'Ctrl+y' -Function Redo - -# Custom functions for PSReadLine -Set-PSReadLineOption -AddToHistoryHandler { - param($line) - $sensitive = @('password', 'secret', 'token', 'apikey', 'connectionstring') - $hasSensitive = $sensitive | Where-Object { $line -match $_ } - return ($null -eq $hasSensitive) -} - -# Improved prediction settings -Set-PSReadLineOption -PredictionSource HistoryAndPlugin -Set-PSReadLineOption -MaximumHistoryCount 10000 - -# Custom completion for common commands -$scriptblock = { - param($wordToComplete, $commandAst, $cursorPosition) - $customCompletions = @{ - 'git' = @('status', 'add', 'commit', 'push', 'pull', 'clone', 'checkout') - 'mvn' = @('compile', 'package', 'test', 'install', 'verify', 'deploy') - } - - $command = $commandAst.CommandElements[0].Value - if ($customCompletions.ContainsKey($command)) { - $customCompletions[$command] | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object { - [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) - } - } -} - -Register-ArgumentCompleter -Native -CommandName git, mvn -ScriptBlock $scriptblock - -$scriptblock = { - param($wordToComplete, $commandAst, $cursorPosition) - dotnet complete --position $cursorPosition $commandAst.ToString() | - ForEach-Object { - [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_) - } -} - -Register-ArgumentCompleter -Native -CommandName dotnet -ScriptBlock $scriptblock - -# Setting Prompt with Oh My Posh -oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\peru.omp.json" | Invoke-Expression - -if (Get-Command zoxide -ErrorAction SilentlyContinue) { - Invoke-Expression (& { (zoxide init --cmd cd powershell | Out-String) }) -} -else { - Write-Host "zoxide command not found. Attempting to install via winget..." - try { - winget install -e --id ajeetdsouza.zoxide - Write-Host "zoxide installed successfully. Initializing..." - Invoke-Expression (& { (zoxide init powershell | Out-String) }) - } - catch { - Write-Error "Failed to install zoxide. Error: $_" - } -} - -Set-Alias -Name z -Value __zoxide_z -Option AllScope -Scope Global -Force -Set-Alias -Name zi -Value __zoxide_zi -Option AllScope -Scope Global -Force - -if (-not (Get-Module -ListAvailable -Name Microsoft.WinGet.CommandNotFound) -and $IsWindows) { - Install-Module -Name Microsoft.WinGet.CommandNotFound -Scope CurrentUser -Force -SkipPublisherCheck -} - -if ($IsWindows) { - Import-Module -Name Microsoft.WinGet.CommandNotFound -} - -function Add-Module ($moduleName) { - if (-not (Get-Module -ListAvailable -Name $moduleName)) { - Install-Module -Name $moduleName -Scope CurrentUser -Force -SkipPublisherCheck - } -} - -# Import Modules and External Profiles -Add-Module Terminal-Icons -Import-Module -Name Terminal-Icons - -Add-Module cd-extras -Import-Module -Name cd-extras - -Add-Module PsHosts -Import-Module -Name PsHosts - -Add-Module z -Import-Module -Name z - -# PowerShell FZF integration -Add-Module PSFzf -Import-Module -Name PSFzf -Set-PsFzfOption -PSReadlineChordProvider 'Ctrl+f' -PsReadlineChordReverseHistory 'Ctrl+r' -Set-PsFzfOption -EnableAliasFuzzyKillProcess -EnableAliasFuzzyEdit -EnableAliasFuzzyGitStatus -EnableAliasFuzzySetLocation - -# example command - use $Location with a different command: -$commandOverride = [ScriptBlock]{ param($Location) Write-Host $Location } -# pass your override to PSFzf: -Set-PsFzfOption -AltCCommand $commandOverride