写在最前

无聊的碎碎念不用在意

我一直秉持着一个美化舒适的开发环境能够极大的激发编程的兴趣这件事。而Win10原版的PowerShell和CMD窗口以及git自带的git bash都不能令我满意,甚至可以说实在是太丑了

于是想到了利用oh-my-posh来美化powershell。

冰老师的博客里看到过使用Windows Terminal来替换powershell,但是看了下配置方案,大部分都是写入脚本,对程序员来说确实是很elegant了,但是对小白很不友好。
相比于此,本帖使用的是ConEmu终端替换Powershell。ConEmu不仅提供完整的中文支持,而且有完整的GUI设置界面,界面元素也可以任意自定义。包括透明度和背景图片。

安装必要软件

ConEmu安装包已经释出,Chocolatey现已成为非必要内容,可以不装

Chocolatey非必须,原本是为了给ConEmu提供安装路径和修复依赖,但是现在ConEmu作者已经释出了安装包,可以直接使用.exe可执行文件安装ConEmu。

官方发布了两种安装方法,一种是通过cmd,一种是通过powershell,这里我是从powershell安装。

安装方法:先在管理员模式下启动powershell。win+X后再按A

1
2
3
4
5
6
7
8
# 以下为官方提示,大意为按照Chocolatey需要获得相应权限,因此执行相应代码。
With PowerShell, there is an additional step. You must ensure Get-ExecutionPolicy is not Restricted. We suggest using Bypass to bypass the policy to get things installed or AllSigned for quite a bit more security.
# 对于PowerShell,还有一个额外的步骤。您必须确保访问执行政策不受限制。我们建议使用旁路绕过策略来安装或全部同意,以获得更多的安全性。*

Run Get-ExecutionPolicy. If it returns Restricted, then run Set-ExecutionPolicy AllSigned or Set-ExecutionPolicy Bypass -Scope Process.
Now run the following command

Get-ExecutionPolicy运行。如果返回受限,则运行Set-ExecutionPolicy AllSigned或Set-ExecutionPolicy旁路作用域进程。

现在运行以下命令:

1
2
3
4
Set-ExecutionPolicy AllSigned
# 在接下来的选项中选择A而不是Y
# 接着运行以下命令
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

如此一来就Chocolatey安装好了。这里需要某种“较为稳定的稳定的网络环境”。记得开全局模式。

安装ConEmu

ConEmu相当于Windows终端的增强版,可以直接打开多种类型的控制台窗口,安装完了可以用它替换Powershell,调试好以后使用感觉一定比原版powershell好。以下是ConEmu作者的github仓库,觉得不错的可以去点个star。

若事先安装好了chocolatey,那么直接在powershell中用以下指令安装就好

1
choco install ConEmu

若没有安装chocolatey,请访问ConEmu官网或者ConEmu Releases下载安装即可。
如果有下载过慢的情况,可以考虑访问这两篇教程:

安装Powerline字体

直接安装oh-my-posh,由于缺少字体支持,会出现乱码,为了优质体验,需要安装Powerline字体。

  1. 要用到git。win+X然后再按A,启动powershell管理员模式。执行代码:
    1
    2
    3
    4
    5
    # 为了保证下载速度,此处已经替换成了gitee的镜像仓库
    git clone https://gitee.com/akilar/fonts.git --depth=1
    # install
    cd fonts
    ./install.ps1
  2. 可能遇到的bug
    执行以上代码过程中可能遇到的bug

    这个问题主要是powershell的脚本运行执行权限没有赋予完全。之后可能会经常遇到,我就不多说了,只写这一次。

    如果提示:
    1
    2
    3
    4
    5
    无法加载文件 ******.ps1,因为在此系统中禁止执行脚本。有关详细信息,请参阅 "get-help about_signing"
    所在位置 行:1 字符: 17
    + E:\Test\test.ps1 <<<<
    + CategoryInfo : NotSpecified: (:) [], PSSecurityException
    + FullyQualifiedErrorId : RuntimeException
    那么执行:
    1
    set-ExecutionPolicy RemoteSigned
    在接下来的选项中输入Y来获取执行政策。

安装posh-git和oh-my-posh

  1. 依旧是Win+X后按A打开powershell管理员模式。
    输入

    1
    2
    3
    4
    5
    Install-Module posh-git -Scope CurrentUser
    Install-Module oh-my-posh -Scope CurrentUser
    # 安装完成后,需要修改主题配置的脚本文件,执行以下命令
    if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }
    notepad $PROFILE
  2. 在打开的.ps1配置文件中加入以下内容,主题选择可以参见以下内容

    1
    2
    3
    Import-Module posh-git
    Import-Module oh-my-posh
    Set-Theme Agnoster

    其中Set-Theme Agnoster设置了Agnoster主题,也可以去官网找其他你喜欢的风格

若下载过慢,可以使用方案二
  1. 下载我的镜像资源文件
  2. 将下载的WindowsPowerShell.zip解压得到WindowsPowerShell文件夹,将整个文件夹复制到C:\Users\Username\Documents\目录下,(Username是你的用户名,这个路径其实就是常说的“我的文档”文件夹)

设置ConEmu

ConEmu的中文支持相当不错,读者可以自由探索设置内容。而且ConEmu自带恢复默认设置选项,不用担心自己乱改导致出错。

首先放一下我的配置效果:

设置步骤如下:

  1. 设置默认语言为中文简体。
    打开ConEmu,右键上方栏位,选择setting:

  2. 设置默认启动shell为{Shells::Powershell}:
    当然也可以选择别的,例如{Shells::Powershell(Admin)}

  3. 设置控制台主要字体为powerline字体:
    这里我用的是Meslo LG M DZ for Powerline,也可以改成别的,有Powerline字体标识就好。替代字体(错误代码页,中日韩,等。)选择Segoe UI Emoji,这个是Win10自带的emoji字体。
  4. 设置不显示标签栏:
    标签栏显示设置为不要显示
  5. 取消显示状态栏:
    显示状态栏的勾选去掉
  6. 设置终端默认任务:

    这里是针对hexo博客提供的一个配置,无需求的可以无视

    这里我选择的是{Shells::Powershell},勾选新窗口默认任务默认shell(WIN+X),然后在下方的启动目录选项中选择自己的Hexo博客根目录。
    这样,在已启动任意ConEmu窗口后,只需要按Win+X,新建的shell默认启动Powershell并定位到Hexo博客根目录了。

  7. 设置ConEmu为默认shell
    这一步的目的就是为了用ConEmu替换掉Powershell,原生的Powershell是不支持第三方字体的。
    选择默认终端,勾选强制使用ConEmu作为控制台应用程序的默认终端

ConEmu还有许多其他功能可以探索,比如让默认启动位置为Hexo的根目录,或者给他增加一个背景图,或者调整透明度,两者结合还可以做出毛玻璃效果。因为对中文的支持还算可以,请诸位自行探索,本文不多加赘述。

后记

至此,powershell美化就完成了,如果你是用安装版的git,那么你可以直接通过在你的Hexo文件下,按住Shift,单击右键,选择在此处打开powershell,然后在powershell(其实是ConEmu了)里使用hexo和git命令了。绿色版的git的话,请你老老实实去把GIT_HOME之类的环境变量配好吧。