Skip to content
Cavill's Blog
Go back

你需要一个更好的终端

1,128 字

我想每一个程序员都需要一个既好用又美观的终端,因为这是每天都高频使用的工具,配置好了既赏心悦目,又能提高效率,因此我会在这篇 Blog 里面详细介绍我是如何配置的。

首先这是我的电脑:

我的电脑配置

如果你也是 win 11,你可以用这段代码来查阅自己的电脑配置:

$cs  = Get-CimInstance Win32_ComputerSystem
$cpu = Get-CimInstance Win32_Processor
$os  = Get-CimInstance Win32_OperatingSystem
$gpu = Get-CimInstance Win32_VideoController
$disk = Get-PhysicalDisk

@"
电脑型号:$($cs.Manufacturer) $($cs.Model)
系统:$($os.Caption) $($os.Version)(Build $($os.BuildNumber))
架构:$($cs.SystemType)
CPU:$($cpu.Name)
内存:$([math]::Round($cs.TotalPhysicalMemory / 1GB)) GB
显卡:$(($gpu.Name -join ';'))
硬盘:$(($disk | ForEach-Object { "$($_.FriendlyName) $([math]::Round($_.Size / 1GB)) GB" }) -join ';')
"@

得知配置之后,我强烈推荐使用 winget 下载一个 Windows Terminal。这比 Windows 原生控制台好用的多。具体安装命令如下:

winget install --id Microsoft.WindowsTerminal -e

安装好后,按 win 并检索「终端」或者在 powershell 里输入 wt 就可以进入了。

然后我使用了 Scoop 来进行下载我需要的一些 CLI tools:

下载命令如下:

scoop bucket add extras  # lazygit 在 Scoop 的 extras 仓库,不在默认的 main 仓库。
scoop install lazygit fzf fd zoxide

安装好后,fd 装好即用,lazygit 也不着急配置。主要来处理一下 zoxide 和 fzf。

先安装 fzf 的 PowerShell 集成模块:

Install-Module PSFzf -Scope CurrentUser

遇到 NuGet 或 PSGallery 的确认提示,输入 Y 即可。

然后打开 PowerShell 7 的个人配置文件:

$profileDir = Split-Path -Parent $PROFILE
New-Item -ItemType Directory -Path $profileDir -Force | Out-Null

if (-not (Test-Path $PROFILE)) {
    New-Item -ItemType File -Path $PROFILE -Force | Out-Null
}

notepad $PROFILE

写入:

# fzf:模糊查找文件与历史命令
Import-Module PSFzf

# Ctrl+T:当前目录中模糊选择文件
# Ctrl+R:模糊搜索历史命令
Set-PsFzfOption `
    -PSReadlineChordProvider 'Ctrl+t' `
    -PSReadlineChordReverseHistory 'Ctrl+r'

# fzf 默认用 fd 枚举文件:快,且排除 .git
$env:FZF_DEFAULT_COMMAND = 'fd --type f --hidden --exclude .git'
$env:FZF_CTRL_T_COMMAND = $env:FZF_DEFAULT_COMMAND
$env:FZF_DEFAULT_OPTS = '--height 45% --layout=reverse --border'

# zoxide:智能目录跳转;保持在配置文件最后
Invoke-Expression (& { (zoxide init powershell | Out-String) })

保存后,执行:

. $PROFILE

然后你的日常 workflow 就变成了:

z leaf          # 跳到你最常去、名称最匹配的目录
zi              # 用 fzf 交互选择曾访问过的目录

Ctrl+T          # 当前目录下模糊选文件,插入命令行
Ctrl+R          # 模糊搜索你以前输过的命令

fd main         # 快速找名字含 main 的文件
fd -e cpp       # 找所有 .cpp 文件
fd -t d build   # 找名为 build 的目录

lazygit         # 在 Git 仓库内启动

到这里,只是完成了好用。接下来,要想办法让终端变得好看。

我还是使用 Scoop 下载了 Oh My Posh 和图标字体:

scoop install oh-my-posh
oh-my-posh font install meslo 

下载好之后,按 Ctrl + , 打开设置,在「默认值」中找到「外观」,在「外观」中找到「字体」。

我选择了 MesloLGM Nerd Font Mono 字体,你可以根据个人喜欢来定制。

然后,我们需要把这些配置写入 powershell,使其生效。在此之前,你可以用这样的命令预览:

$ompTheme = 'jandedobbeleer' #可以选择自己喜欢的主题,具体可在https://ohmyposh.dev/docs/themes寻找
oh-my-posh init pwsh --config $ompTheme | Invoke-Expression

预览之后,运行:

notepad $PROFILE

在

# zoxide:智能目录跳转;保持在配置文件最后
Invoke-Expression (& { (zoxide init powershell | Out-String) })

这段上面一行,写入:

# Minimal Git-aware prompt
oh-my-posh init pwsh --config "jandedobbeleer" | Invoke-Expression

保存后执行:

. $PROFILE

就大功告成了。

当然这只是我个人的配置,美观是更高的追求,好用才是基本的需要,我觉得一切配置还是要自己用的顺手才好,不要过度配置。

Aside

虽然有些熟练掌握 toolchain 的高手,操作起来真的很酷,但我是真心做不来。果然还是适合自己的最好。

Hope this helps!


Edit page
Share this post:

Next Post
如何理解实变函数的上下极限?