powershell
PowerShell
安装#
使用说明#
-Force 对应 Unix 的 -A,让 la 列出隐藏和系统项。
不定义 ll —— PowerShell 侧本来就没有,跨平台统一只做真正会敲的那个。
git 相关不再用 posh-git / git-aliases 模块,改为自己定义函数,见 git 文档。
加快启动#
profile 的开销几乎全花在拉起子进程上。实测 pwsh -Command "exit" 的中位值:
starship 会被拉起两次#
starship init powershell 的输出只有一行:
也就是说执行它的时候会再调一次 starship。直接取完整脚本并缓存到文件,省掉这一整轮:
按二进制的 LastWriteTime 决定是否重新生成,winget upgrade 之后会自动更新,不用手动清缓存。
dot-source 必须写在 profile 顶层。 把这段包进函数里,. $__f 只会作用于函数作用域,
prompt 定义不到全局,表现就是「缓存跑了但提示符没变」。
mise 的补全脚本也用同样的方式缓存,但必须排在 mise activate 之后 ——
补全运行时要调 usage,而 usage 本身是 mise 管的工具,activate 之前不在 PATH 里,
于是每开一个 shell 都会打一行 usage CLI not found。详见 mise 文档。
动不了的那部分#
Set-PSReadlineKeyHandler 一行约 183 ms,实际是 PSReadLine 模块首次加载的代价,不是设快捷键本身。
交互式会话里这个模块本来就会加载,把它挪走或延迟只是把耗时推到第一次按键,体感不会变快。
mise activate 也不能缓存 —— 它必须每次执行,为当前会话解析版本并挂上目录切换钩子。