当前位置: 首页 > news >正文

IDEA 配置终端提示符样式,通过脚本方式

某天闲得无聊想要通过 powershell 的脚本修改 powershell 的提示符,让 IDEA 的终端显示更加鲜艳简洁,最终做到如下效果

  1. 修改提示符颜色
  2. 修改提示符提示普通用户和管理员权限
  3. 修改路径表现形式
  4. 修改项目根路径以 ~ 表示
    在这里插入图片描述
    这是以管理员形式启动的IDEA,这时候终端是有管理员权限的,所以样式被改变了
    在这里插入图片描述

实现流程

  1. 创建一个 ztp_function_idea.ps1 文件(该文件需要在配置在环境变量,如果没有则需要使用的时候键入完整路径)
function prompt {$dir = (Get-Location).Path;if ($null -eq $env:WORK) {$env:WORK = $dir}$name = $env:USERNAME.ToLower()# 定义路径映射:每个元素是路径表达式和对应简称的元组$PathAliases = @(@{ Path = $env:USERPROFILE; Alias = 'home' }@{ Path = $env:WORK; Alias = '~' }@{ Path = [Environment]::GetFolderPath('Desktop'); Alias = 'Desktop' }@{ Path = [Environment]::GetFolderPath('MyDocuments'); Alias = 'Documents' }@{ # Personal 文件夹且不等于 MyDocuments(避免重复)Path = { [Environment]::GetFolderPath('Personal') }; Condition = { $dir -eq $_.Invoke() -and $dir -ne [Environment]::GetFolderPath('MyDocuments') }Alias = 'Documents' }@{ Path = [Environment]::GetFolderPath('Startup'); Alias = 'Startup' }@{ Path = [Environment]::GetFolderPath('StartMenu'); Alias = 'StartMenu' }@{ Path = [Environment]::GetFolderPath('CommonStartup'); Alias = 'Startup' }@{ Path = [Environment]::GetFolderPath('CommonStartMenu'); Alias = 'StartMenu' }@{ Path = [Environment]::GetFolderPath('Favorites'); Alias = 'Favorites' }@{ Path = [Environment]::GetFolderPath([Environment+SpecialFolder]::ApplicationData); Alias = 'Roaming' }@{ Path = [Environment]::GetFolderPath('LocalApplicationData'); Alias = 'LocalAppData' }@{ Path = ${env:ProgramFiles(x86)}; Alias = 'ProgramFiles(x86)' }@{ Path = [Environment]::GetFolderPath('Templates'); Alias = 'Templates' }@{ Path = [Environment]::GetFolderPath('Recent'); Alias = 'Recent' }@{ Path = [Environment]::GetFolderPath('SendTo'); Alias = 'SendTo' }@{ Path = [Environment]::GetFolderPath([Environment+SpecialFolder]::NetworkShortcuts); Alias = 'NetHood' }@{ Path = [Environment]::GetFolderPath([Environment+SpecialFolder]::PrinterShortcuts); Alias = 'PrintHood' }@{ Path = [Environment]::GetFolderPath([Environment+SpecialFolder]::MyMusic); Alias = 'Music' }@{ Path = [Environment]::GetFolderPath([Environment+SpecialFolder]::MyPictures); Alias = 'Pictures' }@{ Path = [Environment]::GetFolderPath([Environment+SpecialFolder]::MyVideos); Alias = 'Videos' }@{ Path = { (New-Object -ComObject Shell.Application).Namespace('shell:Downloads').Self.Path }Alias = 'Downloads'}@{ Path = "$env:USERPROFILE\OneDrive"; Alias = 'OneDrive' }@{ Path = "$env:PROGRAMFILES\WindowsApps"; Alias = 'WindowsApps' }@{ Path = [Environment]::GetFolderPath('System'); Alias = 'System' }@{ Path = [Environment]::GetFolderPath('CommonApplicationData'); Alias = 'ProgramData' }@{ Path = [Environment]::GetFolderPath('ProgramFiles'); Alias = 'ProgramFiles' }@{ Path = $env:WINDIR; Alias = 'Windows' })$flag = 0# 遍历数组查找匹配项foreach ($item in $PathAliases) {$targetPath = if ($item.Path -is [scriptblock]) { $item.Path.Invoke() } else { $item.Path }if ($dir.StartsWith($targetPath, [System.StringComparison]::OrdinalIgnoreCase)) {if ($item.Condition) {if($item.Condition.Invoke()){}}$relative = $( $suffix = $dir.Substring($targetPath.Length).TrimStart('\'); "/$suffix".TrimEnd('/') )$dir = $item.Alias + $relative$result = if ($item.Alias -eq '~') { '' } else { '/' }$dir = $result + $dir.Replace('\', '/').Replace(':', '/') -replace '/+', '/'$flag = 1break}}$dir = $dir.ToLower()if ($flag -eq 0) {# $dir = '/' + $dir.ToLower().Replace('\', '/').Replace(':', '/') -replace '/+', '/'$dir = '/' + $dir.Replace('\', '/').Replace(':', '/') -replace '/+', '/'$dir = $dir -replace '/$',''}# ✅ ANSI 控制字符$ESC = [char]27$GREEN_BOLD = "$ESC[1;32m"   # 加粗 + 绿色$BLUE       = "$ESC[34m"     # 蓝色$RESET      = "$ESC[0m"      # 重置(关闭所有样式)$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)$userPart     = "root@$name"$pathPart     = $dir$promptChar   = "# "if (!$isAdmin) {$userPart     = "$name@$name"$promptChar   = "$ "}# 组合输出:绿色加粗用户名 + 重置后加冒号 + 蓝色路径 + 重置 + 提示符"$GREEN_BOLD$userPart$RESET`:$BLUE$pathPart$RESET$promptChar"# "root@$name`:$dir# " 
}# todo 启动一个终端并应用上面的函数 %SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -NoExit chcp 65001
  1. 修改 IDEA 终端的路径
c:\windows\system32\windowspowershell\v1.0\powershell.exe  -NoExit -Command "chcp 65001; . 'ztp_function_idea'"

在这里插入图片描述

http://www.dtcms.com/a/338232.html

相关文章:

  • IntelliJ IDEA 开发配置教程
  • WPF---数据模版
  • 监督学习(Supervised Learning)和 无监督学习(Unsupervised Learning)详解
  • PCIe ASPM详解
  • 14.Linux线程(2)线程同步、线程安全、线程与fork
  • 【秋招笔试】2025.08.17大疆秋招机考第一套
  • plantsimulation知识点25.8.18-从一个RGV到另一台RGV,工件长度和宽度方向互换
  • pytest测试框架之基本用法
  • GPT-5之后:当大模型更新不再是唯一焦点
  • 本地搭建dify+deepseek智能体
  • 【unitrix数间混合计算】3.1 零标记trait(zero.rs)
  • 【最后203篇系列】033 Mongo副本集修复过程
  • Maven resources资源配置详解
  • 小程序被爬虫攻击,使用waf能防护吗?
  • Vision Master的C#脚本与opencv联合编程
  • 【opencv-Python学习笔记(7):图像平滑处理】
  • 【图像算法 - 17】慧眼识“果”:基于深度学习与OpenCV的苹果智能检测系统(附完整代码)
  • sqli-labs通关笔记-第54关 GET字符型注入(单引号闭合 限制10次探测机会)
  • 英特尔公司Darren Pulsipher 博士:以架构之力推动政府数字化转型
  • 【leetcode】392. 判断子序列
  • 【yocto】为什么要选择yocto?
  • leetcode4_452 and 763
  • 力扣热题100------19.删除链表的倒数第N个结点
  • 【MongoDB与Python:数据库操作入门教程】
  • 力扣hot100:移动零问题的巧妙解决:双指针与原地交换策略(283)
  • ETL中统一调度的方式
  • Vue深入组件:组件事件详解1
  • 如何使用 React 101 的 Highcharts 包装器
  • 【网络安全实验报告】实验七:简单的防火墙搭建实验
  • css word-pass