5

1.PowerShell, 2.WSL在我的 Windows 10 机器中使用带有 shell 的 Windows 终端(预览版)。我安装了最新版本的oh-my-poshposh-git自定义终端。我当前的主题是Agnoster提供丰富多彩的自定义提示。但我想从提示中删除“username@host”。

例如:

当前=>用户名@主机D:\文件夹名称>

需要=> D:\文件夹名>

我尝试了一些$GitPromptSettings变量以及 GitPrompt.ps1posh-git 文件夹内的文件但没有用的东西。

另外,因为我有 oh-my-posh 和 posh-git,它们是否都具有提示自定义属性或者它只是来自 posh-git?

任何帮助表示赞赏。

4

4 回答 4

8

从中删除类型为会话的段~\Documents\WindowsPowerShell\Modules\oh-my-posh\3.101.23\themes\<themename>.omp.json

于 2021-03-22T03:50:39.137 回答
7

您必须在导入模块之前设置 $DefaultUser。

例子:

$global:DefaultUser = [System.Environment]::UserName
Import-Module posh-git 
Import-Module oh-my-posh
Set-Theme Paradox
于 2020-03-08T07:56:19.553 回答
5

Oh My Posh 3中,隐藏username@host部分的方法发生了变化,因为整个主题配置发生了变化。

电力线的username@host部分来自该"session"段。session可以在这里找到配置选项: https ://ohmyposh.dev/docs/session

有趣的选项是:

  • display_user: boolean- 是否显示用户名 - 默认为true
  • display_host: boolean- 是否显示主机名 - 默认为true
  • default_user_name: string- 默认用户名 - 默认为空
  • display_default: boolean- 当用户匹配时显示或不显示段default_user_name- 默认为true

以及关于环境变量的注释:

POSH_SESSION_DEFAULT_USER- 用于覆盖硬编码的default_user_name属性

解决方案

基于此,我做了以下改动:

  1. 对于主题,我将display_default: false属性添加到"session"段中:
    {
      "type": "session",
      // ....
      "properties": {
        "display_default": false
      }
    }```
    
  2. 在我的 powershell 配置文件中,我将新的环境变量设置为我自己的用户名: $env:POSH_SESSION_DEFAULT_USER = [System.Environment]::UserName

user@host只要我使用我的默认用户名,这会使提示的一部分消失。

于 2021-04-15T07:25:11.553 回答
2

您可以查看{theme's name}.psm1Themes/ 目录以了解其工作原理。关键是下面的代码。

例如悖论.psm1

$user = $sl.CurrentUser
....
if (Test-NotDefaultUser($user)) {

        $prompt += Write-Prompt -Object "$user@$computer " -ForegroundColor $sl.Colors.SessionInfoForegroundColor -BackgroundColor $sl.Colors.SessionInfoBackgroundColor

}

如果$DefaultUser相同$user或不同$null,您的 powershell 不会显示$user@$computer

于 2020-03-10T02:30:27.803 回答