您当前的位置:首页 > 电脑百科 > 软件技术 > 操作系统 > windows

打造一个好看又实用的Windows终端

时间:2021-10-19 12:14:11  来源:  作者:woaker

曾经非常羡慕mac平台上的iTerm2+oh-my-zsh组合,可以实现一个非常好看又实用的终端,十分希望windows平台上也有类似的东西,然而在很长时间里都没有出现,以前最好的方案还是cmder,直到微软发布了Windows Terminal。

Windows Terminal

Windows Terminal正式版已经发布了,可以直接通过Windows商店安装,现在已经支持可视化的设置界面了,大多数的美化教程可能都会介绍Windows Terminal结合WSL使用,但我个人使用下来发现几个问题:一个是WSL启动较慢,二是开启WSL后vmmem会占用大量内存,第三是通过vscode访问WSL有时会出现断开连接,所以我放弃了WSL这个方案。

打造一个好看又实用的Windows终端

 

oh-my-posh

oh-my-posh是PowerShell的一套主题,听名字就知道和oh-my-zsh是类似的,最新版本是 Oh My Posh 3

开始安装

oh-my-posh的安装还是比较简单的

  • 通过管理员权限打开PowerShell
  • 绕过PowerShell执行策略,使其可以执行脚本文件
Set-ExecutionPolicy Bypass
复制代码
  • 安装oh-my-posh主题
Install-Module oh-my-posh -Scope CurrentUser
复制代码
  • 安装posh-git将git信息添加到提示中
Install-Module posh-git -Scope CurrentUser
复制代码

注意:如果中途有询问,直接Y或A就好了

  • 通过这个 地址 下载安装字体,推荐安装DejaVuSansMono Nerd Font(其他的我也没试过)

修改配置

安装完成之后,修改PowerShell的配置文件

  • 启动编辑PowerShell配置文件的引擎
if (!(Test-Path -Path $PROFILE )) { New-Item -Type File -Path $PROFILE -Force }
复制代码
  • 使用vscode打开配置文件(也可以用其他方式打开),配置文件地址一般是:C:Users${username}DocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1
code $PROFILE
复制代码
  • 添加以下配置内容
Import-Module posh-git # 导入posh-git
Import-Module oh-my-posh # 导入oh-my-posh
Set-PoshPrompt -Theme M365Princess # 设置主题为M365Princess
复制代码
  • 最终效果如图,也可以通过Get-PoshThemes查看全部可用主题
打造一个好看又实用的Windows终端

 

自定义别名

本来美化教程到这儿就差不多结束了,但是有一说一,这个东西网上的教程其实已经有很多了,在这儿发一个类似的东西属实没啥必要,所以下面要整点不一样的东西。

通过上面那个配置文件,可以自定义一些命令行的别名,类似于一些简单的跳转:

function Go-Up {
    # 跳转上级
    cd ../
}

function Go-Home {
    # 跳转根目录
    cd ~
}

Set-Alias '..' Go-up
Set-Alias '~' Go-Home
复制代码

在使用PowerShell的过程中,一直有个不太喜欢的点,就是PowerShell查看当前目录下的文件可以使用 ls、dir、Get-ChildItem,这几个效果都是一样的,如下:

打造一个好看又实用的Windows终端

 

而我想要实现类似于bash的文件名称横向排布,并且不同的文件类型显示不同的颜色的输出,类似于下图:

打造一个好看又实用的Windows终端

 

PowerShell没有提供类似的方法,但我们可以自定义实现,代码如下:

# >>> 移除默认别名 >>>
Remove-Item alias:ls

# >>> 自定义函数 >>>
function Color-List($str) {
    $regex_opts = ([System.Text.RegularExpressions.RegexOptions]::IgnoreCase-bor [System.Text.RegularExpressions.RegexOptions]::Compiled)
    $fore = $Host.UI.RawUI.ForegroundColor
    $compressed = New-Object System.Text.RegularExpressions.Regex('.(zip|tar|gz|rar|jar|war|7z)$', $regex_opts)
    $executable = New-Object System.Text.RegularExpressions.Regex('.(exe|bat|cmd|py|ps1|psm1|vbs|rb|reg|sh|zsh)$', $regex_opts)
    $code_files = New-Object System.Text.RegularExpressions.Regex('.(ini|csv|log|xml|yml|json|JAVA|c|cpp|css|sass|js|ts|jsx|tsx|vue)$', $regex_opts)

    $itemList = @()
    Invoke-Expression ("Get-ChildItem" + " " + $str) | ForEach-Object {
        $item = New-Object object
        if ($_.GetType().Name -eq 'DirectoryInfo') 
        {
            $item | Add-Member NoteProperty name ("`e[34m" + $_.name) # 目录名称蓝色
        }
        elseif ($compressed.IsMatch($_.Name)) 
        {
            $item | Add-Member NoteProperty name ("`e[31m" + $_.name) # 压缩文件红色
        }
        elseif ($executable.IsMatch($_.Name))
        {
            $item | Add-Member NoteProperty name ("`e[36m" + $_.name) # 可执行文件青色
        }
        elseif ($code_files.IsMatch($_.Name))
        {
            $item | Add-Member NoteProperty name ("`e[33m" + $_.name) # 代码文件黄色
        }
        else
        {
            $item | Add-Member NoteProperty name ("`e[37m" + $_.name) # 其他文件默认白色
        } 
        $itemList += $item
    }
    echo $itemList | Format-Wide -AutoSize # 格式化输出
}

function Get-List {
    Color-List "-Exclude .*"
}

function Get-All-List {
    Color-List "$args"
}

# >>> 重新定义别名 >>>
Set-Alias ls Get-List
Set-Alias la Get-All-List
复制代码

最终效果如下:

打造一个好看又实用的Windows终端

 



Tags:Windows终端   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
曾经非常羡慕Mac平台上的iTerm2+oh-my-zsh组合,可以实现一个非常好看又实用的终端,十分希望Windows平台上也有类似的东西,然而在很长时间里都没有出现,以前最好的方案还是cmder,...【详细内容】
2021-10-19  Tags: Windows终端  点击:(537)  评论:(0)  加入收藏
▌简易百科推荐
一、前言有朋友问:怎么才能让Windows电脑与iPhone方便的交换文件,我的解决方案是:利用Documents By Readdle 来完成Windows 11 与 iPhone / iPad 互传文件。苹果电脑与手机间通...【详细内容】
2021-12-27  Edge麦客    Tags:Windows11   点击:(0)  评论:(0)  加入收藏
IT之家 12 月 27 日消息,据 Windows Latest 报道,有时,你需要在 Windows 11 或 Windows 10 操作系统中复制一个文件或文件夹的完整路径。当你要在命令行或 Windows Run 等工具...【详细内容】
2021-12-27    IT之家  Tags:Win11   点击:(0)  评论:(0)  加入收藏
在windows使用中通常会需要命令脚本下载文件。这里记录了几种在cmd下不需要其他三方程序就可以直接下载文件的方法。1.certutil certutil -urlcache -split -f https://www....【详细内容】
2021-12-27  家门前    Tags:windows   点击:(2)  评论:(0)  加入收藏
电脑已成为我们生活的一部分,那么怎么激活Windows系统呢?以下分享一招可以永久激活Win10电脑系统,只需要两行代码即可。首先按键盘上的“Win+R“键调出运行框,然后在运行框中输...【详细内容】
2021-12-20  汕头辉    Tags:   点击:(24)  评论:(0)  加入收藏
微软的Windows开发团队今天发布了Windows 11 2021年的最后一个更新版本:Windows 11 Insider Preview Build 22523,目前该版本可供Insiders使用,并进行了许多改进和修复。该公司...【详细内容】
2021-12-17  微课传媒    Tags:Windows 11   点击:(19)  评论:(0)  加入收藏
IT之家 12 月 15 日消息,根据 mspoweruser 报道,微软于 12 月 13 日为当前支持的所有版本 Windows 10 操作系统推出了 KB5008212 累积更新,大小约为 600MB。这一更新没有任何新...【详细内容】
2021-12-15  IT之家    Tags:KB5008212   点击:(305)  评论:(0)  加入收藏
我肯定是选择再等一年再升级的 毕竟要给解决bug留出足够时间而且现在win10用着也挺顺手的 没必要折腾一遍系统 有必要升级的有两种人: 喜欢 Windows 11 的新外观,或者就是喜...【详细内容】
2021-12-15  斯巴达不罗嗦    Tags:Win11   点击:(36)  评论:(0)  加入收藏
安装Set-ExecutionPolicy RemoteSigned -scope CurrentUseriwr -useb get.scoop.sh | iex 测试安装是否成功scoop 查找软件scoop search git安装软件scoop install git关于...【详细内容】
2021-12-03  alantop    Tags:scoop   点击:(25)  评论:(0)  加入收藏
在实验室环境中,我一直在尝试Windows 11部署,并开始更新我在实验室中使用的一些方法来部署 Windows 11 的映像。这些工具包括 Microsoft Deployment Toolkit (MDT)。请注意,目前,W...【详细内容】
2021-12-01  壹加壹大与贰  今日头条  Tags:Windows 11   点击:(44)  评论:(0)  加入收藏
Win11怎么取消开机密码?很多用户都会给自己的电脑设置开机密码,保护自己的隐私,但是有的用户每次开机都有输入密码觉得很麻烦,所以想要取消开机密码,那么Win11怎么取消开机密码呢...【详细内容】
2021-11-30  小白系统    Tags:Win11   点击:(69)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条