环境配置与命令行优化指南

环境配置与命令行优化指南

SCOOP

ScoopWindows 平台上的开源包管理工具,内含多个储存库,并且和 WinGet 不同的是 Scoop 支持第三方存储库,作为开源软件,Scoop的第三方库通常是安全的

安装和配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 查看 PowerShell 版本,确保版本大于 5.1
Get-Host | Select-Object Version

# 允许执行 PowerShell 脚本
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

# 自定义 Scoop 安装路径
[Environment]::SetEnvironmentVariable('SCOOP', 'D:\Scoop', 'User')
$env:SCOOP = 'D:\Scoop'

# 安装 Scoop
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression

# 如果安装失败,尝试设置代理
# scoop config proxy 127.0.0.1:8080

SCOOP常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
scoop help # 查看帮助
scoop info <app> # 查看 APP 信息
scoop install <app> # 安装 APP
scoop uninstall <app> # 卸载 APP
scoop reset [app]@[version] # 切换版本
scoop list # 列出已安装的 APP
scoop search # 搜索 APP
scoop search # 更快更好的搜索 APP
scoop status # 检查软件更新
scoop update # 更新 Scoop 自身
scoop update <appName1> <appName2> # 更新指定应用
scoop update * # 更新所有应用(需在 apps 目录下操作)
scoop bucket known # 列出所有已知 bucket
scoop bucket add <bucketName> # 添加 bucket
scoop cache rm <app> # 移除应用缓存
scoop cache rm * # 移除所有缓存
scoop cleanup <app> # 删除旧版本

SCOOP常用存储库

SCOOP常用软件

软件名 介绍
winget 系统包管理器
scoop-search 替代自带搜索,效果比自带的好很多
chsrc 将软件或系统替换最快镜像站
gsudo 某些软件需要安装这个
7zip 压缩(自动安装)
aria2 下载
git 自动安装
nodejs JavaScript
python python
SyncClipboard 剪贴版同步、支持多种平台,支持 WebDAV 或者自建服务端
everything 搜索工具
quicklook 空格键支持预览文件
notepad3 替代默认编辑器
pandoc 文档格式转换(Typora需要)
pixpin 截图贴图OCR本地软件(下载1.7.6.0版本,后续版本要会员)
honeyview 查看图片
magpie 将不支持全屏放大的游戏使用win+shift+A放大,支持多种放大算法
localsend 本地局域网互传
wingetui winget的GUI页面
OfficeToolPlus-Portable 安装office
firacode-NF 字体
SarasaGothic-SC 字体
LXGWNeoXiHei 字体
LXGWWenKai 字体
SourceHanSansCN 字体
SourceHanSerifFont 字体
sarasa-term-sc-nerd 字体

根据[Bug]: inno-setup@6.3.1:解压错误 # 13444由于Scoop使用的默认innounp有一些问题会导致某些应用无法正常安装,因此需要使用以下命令进行替换。

1
2
3
scoop bucket add versions
scoop install versions/innounp-unicode
scoop uninstall innounp

一键安装

1
2
3
4
5
6
7
8
9
10
11
12
13
# 安装常用软件
scoop install aria2 scoop-search gsudo grep gzip localsend honeyview chsrc everything magpie notepad3 pixpin quicklook winget OfficeToolPlus-Portable scoop-completion vscode SyncClipboard
# 如果部分软件找不到那么就是缺少对应存储库,例如 SyncClipboard 需要使用 lemon 进行安装

# 安装全局软件(使用gsudo给管理权限)
sudo scoop install -g python winget nodejs

# 安装字体(使用gsudo给管理权限)
sudo scoop install firacode-NF LXGWWenKai LXGWNeoXiHei sarasa-term-sc-nerd Source-Han-Serif-SC Wenquanyi-Microhei Wenquanyi-Zenhei

#在安装软件后,可以查看最下方的输出,例如:
#Notes: Add 7-Zip as a context menu option by running: "<root>\install-context.reg"
#注意: 通过运行“ < root > install-context. reg”来添加7-Zip 作为上下文菜单选项

附:全平台自动换源工具:chsrc:全平台自动换源
例子:

  • chsrc set python
  • chsrc set winget
  • chsrc set npm

POWERSHELL美化[1]

美化一般有以下手段:使用Oh My PoshStarship、或更换终端为Terminal。在本文中,使用的终端统一为Terminal,字体为FiraCode Nerd Font

oh-my-posh

Oh My Posh是一款适用于多平台的Shell插件,但是由于3.0版本使用了Go语言进行开发,启动时间较长,不太推荐使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
scoop install https://github.com/JanDeDobbeleer/oh-my-posh/releases/latest/download/oh-my-posh.json

# 加载 oh-my-posh 模块和默认主题
oh-my-posh init pwsh | Invoke-Expression

# 获取其他主题
Get-PoshThemes

# 更改主题
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH/1_shell.omp.json" | Invoke-Expression

# 为了永久生效,将以下命令添加到配置文件中
# 示例
oh-my-posh init pwsh --config 'C:\Users\misak12843\AppData\Local\Programs\oh-my-posh\themes\clean-detailed.omp.json' | Invoke-Expression

Starship

Starship 是一个高效的终端美化插件,用 Rust 开发,启动时间快,安装和使用简单。

1
2
3
4
scoop install starship

# 在配置文件中添加
Invoke-Expression (&starship init powershell)

更多配置请参考Starship 文档.

Terminal-Icons

Terminal-Icons 是一个为 PowerShell 显示文件类型图标的模块,依赖 Nerd Fonts

1
2
3
4
5
6
# 安装 Terminal-Icons
scoop install terminal-icons

# 导入模块
Import-Module -Name Terminal-Icons
Show-TerminalIconsTheme

最后呈现出来的效果如下所示:

更改前 更改后
Desktop 󰟀 Desktop
Documents  Documents
Pictures 󰉏 Pictures

如果你的󰟀 显示的不是电脑图标,那么你需要将浏览器中宽度固定的字体更改为nerd-font

posh-git是一个将Git状态添加在PowerShell的插件,通过它可以直观的看到当前目录的分支以及文件的状态。另外还增加了一些针对Git的补全功能。

安装posh-git非常简单,只需要使用scoop install posh-git就可以自动完成安装,而且不需要修改PowerShell的配置文件。以下是终端效果:

1
2
fluid on  master is 📦 v1.9.8 via  v22.7.0
❯ Hello,World

z.lua

z.lua 是一个高效的目录跳转工具,用 Lua 实现,它根据你的使用频率记录访问过的目录,之后可以快速跳转到这些目录。

scoop install lua

然后需要下载 z.lua 项目,这里推荐直接用 git 将项目克隆到用户主目录下。

git clone https://github.com/skywind3000/z.lua.git $HOME/z.lua

然后在$PROFILE 中添加以下代码,这样以后在使用终端的时候都可以用 z 命令来实现跳转了。

1
2
3
4
5
6
7
8
9
10
11
12
13
#进入配置文件
notepad $PROFILE
#添加z插件进入powershell
Invoke-Expression (& { (lua $HOME/z.lua/z.lua --init powershell once enhanced) -join "`n" })

# 当你成功添加了z.lua后,可以试试以下操作:

# 首先需要在终端中切换几次不同的目录,ab是两个路径不同的目录
cd a
cd b
# 然后z.lua就会记住切换的选择,下次直接输入目录名甚至一部分即可实现跳转
z a
z b

配置完成后,你可以通过以下命令快速跳转到最近访问过的目录:

z <部分目录名>

例如,如果你最近访问过 C:\Users\Username\Documents\Projects\MyProject,可以通过以下命令跳转:

z MyProject或者z my

z.lua 会自动匹配并跳转到你最常访问的目录,非常方便。

PSReadLine

PSReadLine 是一个用于增强 PowerShell 控制台用户体验的模块。它提供了丰富的命令行编辑功能、命令历史记录管理,以及键绑定定制。安装和配置 PSReadLine 可以显著提升你在 PowerShell 中的工作效率。

你可以使用以下命令安装PSReadLine

Install-Module -Name PSReadLine -Force -SkipPublisherCheck

-Force 参数确保覆盖任何已安装的版本,-SkipPublisherCheck 则跳过发布者检查,以便顺利安装。

安装完成后,你可以通过自定义配置文件来配置它,以下是推荐配置,你可以在这个链接找到关于配置文件的详细信息。

1
2
3
4
5
6
7
8
9
10
11
12
13
Import-Module PSReadLine
Set-PSReadLineOption -EditMode Windows
# 其他选项:-EditMode Emacs (Emacs风格的快捷键)
# -EditMode Vi (Vim用户狂喜)
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
# 其他选项:-PredictionSource None(关闭自动补全预测)、-PredictionSource History(仅使用历史记录)

# 设定预测结果的显示样式为列表视图
Set-PSReadLineOption -PredictionViewStyle ListView
# 其他选项:-PredictionViewStyle InlineView(内联显示预测结果)
Set-PSReadLineOption -BellStyle None
# 绑定Ctrl+d快捷键,用于删除光标处的字符
Set-PSReadLineKeyHandler -Chord 'Ctrl+d' -Function DeleteChar

附记

以下是自用的Powershell配置,一个是Oh My Posh,另一个是Starship

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# oh-my-posh 初始化
oh-my-posh init pwsh --config 'C:\Users\misak12843\AppData\Local\Programs\oh-my-posh\themes\clean-detailed.omp.json' | Invoke-Expression
set-alias -name ll -value ls
set-alias -name sc -value scoop-search
set-alias -name s -value scoop
Import-Module -Name Terminal-Icons

# z.lua 初始化
Invoke-Expression (& { (lua $HOME/z.lua/z.lua --init powershell once enhanced) -join "`n" })
Import-Module PSReadLine
Set-PSReadLineOption -EditMode Vi
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Set-PSReadLineOption -PredictionViewStyle ListView
Set-PSReadLineOption -BellStyle None
Set-PSReadLineKeyHandler -Chord 'Ctrl+d' -Function DeleteChar

#scoop 自动补全
Import-Module "$($(Get-Item $(Get-Command scoop.ps1).Path).Directory.Parent.FullName)\modules\scoop-completion"

#gsudo
Import-Module gsudoModule

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#starship版本
set-alias -name ll -value ls
set-alias -name sc -value scoop-search
set-alias -name s -value scoop

# starship 初始化
$ENV:STARSHIP_CONFIG = "$HOME\.config\starship\gruvbox-rainbow.toml"
Invoke-Expression (& starship init powershell)
Import-Module -Name Terminal-Icons

# z.lua 初始化
Invoke-Expression (& { (lua $HOME/z.lua/z.lua --init powershell once enhanced) -join "`n" })
Import-Module PSReadLine
Set-PSReadLineOption -EditMode Vi
Set-PSReadLineOption -PredictionSource HistoryAndPlugin
Set-PSReadLineOption -PredictionViewStyle ListView
Set-PSReadLineOption -BellStyle None
Set-PSReadLineKeyHandler -Chord 'Ctrl+d' -Function DeleteChar

#scoop 自动补全
Import-Module "$($(Get-Item $(Get-Command scoop.ps1).Path).Directory.Parent.FullName)\modules\scoop-completion"

#gsudo
Import-Module gsudoModule

注:


环境配置与命令行优化指南
https://misaka12843.github.io/mono/2024/09/03/环境配置与命令行优化指南/
作者
子锋
发布于
2024年9月3日
许可协议