windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)

1. 安装 Windows Terminal。

点击此链接进入网站下载安装。Windows Terminal 可以执行 cmd, powershell, bash 等终端,界面比原生 window 提供的更加漂亮,并且支持自定义各种样式。

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第1张图片

在 window terminal 中可以直接通过 ctrl + 鼠标点击 以管理员模式运行。

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第2张图片

2. 安装 powershell7

安装步骤可参考官方文档。或者直接进入官方 Github 仓库,下载 “Downloads (stable)” 版本的,然后双击安装即可。

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第3张图片

Windows 中默认的 powershell 是版本 5(打开 powershell 运行 Get-Host 命令可查看版本)。虽然默认的 powershell 相比 cmd 好很多了,但很多时候用起来还是不舒服,比如它并不支持 && 操作符,而 powershell 7 则支持。

此外, powershell 7 还支持命令行历史记录和 ctrl + w 快捷键(用于删除距离光标最近的一个 word,自己试试就清楚了,效果等同于 shell 中的 esc + del

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第4张图片

3(可选)自定义 prompt 样式

prompt 是命令行提示符,也就是光标前面的内容,比如 cmd 经典的 >,shell 经典的 $ 都是 prompt 的一部分。

对于 pwsh(powershell),编辑 $Profile 文件可以生成自己喜欢的命令行提示符。

如果你有 vscode,并且将其添加到环境变量中,那么你可以直接通过 code $Profile 来编辑文件(不存在时自动创建)。否则,你可以按照参考下面的命令行来快捷打开/创建文件:

# 如果是初次编辑 Microsoft.PowerShell_profile.ps1 文件
# ,可以先创建文件(如果创建失败请尝试使用管理员模式):
> New-Item -Path $PROFILE -Type File -Force

# 然后打开该文件:
> explorer $Profile

# ---
# 如果上面代码不生效,则可以自己查看文件路径,然后手动创建/编辑
# 查看所在路径:
> echo $PROFILE
C:\Users\username\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

创建文件简单,但编辑文件就很难了,因为直接编辑 $Profile 来书写代码是工作量很大的一件事,对于不是该领域的开发人员来说是很麻烦的,所以这里我提供了一些有用的代码案例可供参考(内容来自 Github 笔记):

3.1 风格:换行 + 彩色 + 判断是否管理员

function prompt {
    $identity = [Security.Principal.WindowsIdentity]::GetCurrent()
    $principal = [Security.Principal.WindowsPrincipal] $identity
    $adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
    $fullpath = (Get-Location) -replace "\\", "/"

    if($principal.IsInRole($adminRole)) {
        ([System.Environment]::NewLine) + "[Admin] " + "$([char]0x1b)[92m" + "$fullpath" + "$([char]0x1b)[91m" + ([System.Environment]::NewLine) + "> "
    } else  {
        ([System.Environment]::NewLine) + "$([char]0x1b)[92m" + "$fullpath" + "$([char]0x1b)[91m" + ([System.Environment]::NewLine) + "> "
    }
}

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第5张图片

3.2 风格:显示当前所在 git 分支

function Write-BranchName () {
    try {
        $branch = git rev-parse --abbrev-ref HEAD

        if ($branch -eq "HEAD") {
            # we're probably in detached HEAD state, so print the SHA
            $branch = git rev-parse --short HEAD
            Write-Host " ($branch)" -ForegroundColor "red"
        }
        else {
            # we're on an actual branch, so print it
            Write-Host " ($branch)" -ForegroundColor "blue"
        }
    } catch {
        # we'll end up here if we're in a newly initiated git repo
        Write-Host " (no branches yet)" -ForegroundColor "yellow"
    }
}

function prompt {
    $base = "PS "
    $path = "$($executionContext.SessionState.Path.CurrentLocation)"
    $userPrompt = "$('>' * ($nestedPromptLevel + 1)) "

    Write-Host "`n$base" -NoNewline

    if (Test-Path .git) {
        Write-Host $path -NoNewline -ForegroundColor "green"
        Write-BranchName
    }
    else {
        # we're not in a repo so don't bother displaying branch name/sha
        Write-Host $path -ForegroundColor "green"
    }

    return $userPrompt
}

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第6张图片

4(可选)借助 oh my posh 实现精美的 prompt 主题

安装步骤可参考 oh my posh 文档。文档已经非常清晰了,所以我这里只给出简洁版本的步骤

4.1. 安装 oh my posh

如果你有安装 winget 工具,可以直接运行下面命令

winget install JanDeDobbeleer.OhMyPosh -s winget

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第7张图片

没有 winget 的话,可以进入该链接中进行安装。

不想安装 winget,可以直接通过 powershell 命令下载安装,命令如下:

Set-ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression ((New-Object System.Net.WebClient).DownloadString('https://ohmyposh.dev/install.ps1'))

成功安装后如图所示:

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第8张图片

如果你安装过程中闪退,则可能是因为网络问题(这个得你自己解决)。因为该命令的本质其实是在 Github 仓库 下载最新的安装程序进行安装的。

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第9张图片

4.2. 安装字体

oh my posh 中很多主题都会用到一些 emoji,这些表情都是需要有对应字体才可以显示的,如果你发现一些图标是方形,那么就是因为找不到字体。

命令下面命令来安装字体:

> oh-my-posh font install --user
# 如果不带 --user 参数,则表示全局安装,则需要以管理员权限运行命令

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第10张图片

安装后字体后,记得要在 window ternimal 中修改字体(如果你有使用 vscode 的话,还得在 vscode 中设置字体)。

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第11张图片

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第12张图片

4.3. 启用 oh my posh

启用前,需要确保你的 oh-my-posh 命令是存在的,不存在的话自行 google 一下何谓环境变量。

打开 $Profile 文件,添加以下内容

oh-my-posh init pwsh | Invoke-Expression

保存退出,重新打开终端就可以看到效果了

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第13张图片

4.4 主题

运行 Get-PoshThemes 命令可以查看所有可用主题:

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第14张图片

选择一个你喜欢的主题,比如 agnoster,然后运行下面命令即可临时替换主题

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\agnoster.omp.json" | Invoke-Expression

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第15张图片

如果喜欢,那么就可以通过以下命令永久替换主题(运行后打开新窗口即可)

oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/agnoster.omp.json" > $profile

windows 发烧友:定制你的终端,让终端变得更漂亮。(window ternimal、pwsh7、prompt 命令行提示符、oh my posh)_第16张图片

甚至你可以选择自定义主题,但这就是一个“兔子洞”了(点击查看我的主题参考),反正我最终因为速度问题弃用了 oh my posh ……

参考

github 笔记

你可能感兴趣的:(windows,prompt)