terminal&powershell
1. 软件安装
1.1. 下载安装 terminal
- winget 安装
1.2. 下载安装 PowerShell
1.2.1. 🗑PowerShell 7.3.0 随 PSReadLine 2.2.6 一起提供
重要提醒
- 不用再次安装posh-git
- 不用单独安装和更新PSReadLine
- 启用预测 IntelliSense
预测性 IntelliSense 默认禁用。
若要启用预测,只需运行以下命令:
Set-PSReadLineOption -PredictionSource History
Set-PSReadLineOption -PredictionViewStyle ListView
若要禁用预测 IntelliSense,只需运行
Set-PSReadLineOption -PredictionSource None
1.3. 安装 oh-my-posh
- winget 安装(推荐)
1.3.1. 预览主题
预览主题
方式 1: 官方在线预览: https://ohmyposh.dev/docs/themes
方式 2: 在 powershell 中输入命令:
Get-PoshThemes方式 3: 本地已安装的 oh-my-posh 主题, 可以在这个路径找到: C:\Users<UserName>\AppData\Local\Programs\oh-my-posh\themes
(ps: 这个路径就是环境变量 - “POSH_THEMES_PATH” 的值.)
1.3.2. 安装主题(主题统一打包安装)
winget install JanDeDobbeleer.OhMyPosh -s winget
1.3.3. 更新主题
winget upgrade JanDeDobbeleer.OhMyPosh -s winget
1.3.3.1. 修改主题模板
oh-my-posh --init --shell pwsh --config "$env:POSH_THEMES_PATH\主题名称.omp.json" | Invoke-Expression
1.3.3.1.1. 查看下载的主题
Oh-my-posh 自带多种主题,可使用以下命令检查
ls $env:POSH_THEMES_PATH
或者用以下操作
echo $env:POSH_THEMES_PATH
复制路径,使用资源管理器访问.
1.4. 下载安装图形字体
- nerd fonts字体下载安装
- links:Nerd Fonts 书呆子字体-图标字体聚合器,字形/图标收集,和字体修补程序
1.4.1. Windows 字体相关知识
- 用户安装的字体都存放在
C:\Users\<用户名>\AppData\Local\Microsoft\Windows\Fonts目录下,为所有用户安装的字体存放在C:\Windows\fonts目录下 - 字体管理,在『设置 --> 个性化 --> 字体』中可以搜索并卸载字体,等同于在
C:\Windows\fonts目录下搜索并删除字体 - 注意:在
C:\Users\<用户名>\AppData\Local\Microsoft\Windows\Fonts目录下删除安装的字体会报错,因为C:\Windows\fonts目录下存有C:\Users\<用户名>\AppData\Local\Microsoft\Windows\Fonts中的字体引用,所以删除/卸载字体,应去C:\Windows\fonts目录下执行
1.5. 下载美化终端的图标
Install-Module -Name Terminal-Icons -Repository PSGallery
1.6. 🚗引入第三方模块
1.6.1. powershell执行策略
安装完后开始菜单程序列表会出现刚刚安装的powershell,用管理员打开新的powershell,设置策略:
# 更改执行策略
set-ExecutionPolicy RemoteSigned
# 查看执行策略
get-ExecutionPolicy
查看当前策略:
Get-ExecutionPolicy
如果是RemoteSigned,则设置成功。
运行策略提示
Restricted:禁止运行任何脚本和配置文件
AllSigned:可以运行脚本,但要求所有脚本和配置文件由可信发布者签名,包括在本地计算机上编写的脚本。
RemoteSigned:可以运行脚本,但要求从网络上下载的脚本和配置文件由可信发布者签名;不要求对已经运行和已在本地计算机编写的脚本进行数字签名。
Unrestricted:可以运行未签名脚本。(危险!)
如果不设置策略,powershell将不能运行外部未签名脚本。
1.7. PSColor 模块
在默认情况下,PowerShell 的文件列表并不会彩色显示。
想要文件列表彩色显示的话,最简单的方法就是安装一个 PowerShell 模块:PSColor。
1.7.1. 命令行输入,安装模块
Install-Module PSColor
2. 编辑配置文件
查看是否有powershell配置文件
Test-path $profile
如果显示为false,手动创建一个:
New-Item -Type File -Force $profile
如果为true,则修改显示路径的配置文件。
也可以使用 $PROFILE 查看配置文件路径。
编辑配置文件:
notepad $PROFILE
2.1. 知识拓展
备注
- 所有用户、所有主机
$PSHOME\Profile.ps1- 所有用户,当前主机
$PSHOME\Microsoft.PowerShell_profile.ps1- 当前用户、所有主机
$Home\Documents\PowerShell\Profile.ps1- 当前用户,当前主机
$Home\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
2.1.1. 创建并使用 PowerShell 配置文件
2.1.1.1. 创建 当前用户,当前主机配置文件
if (!(Test-Path -Path <PROFILE-NAME>)) {
New-Item -ItemType File -Path <PROFILE-NAME> -Force
}
2.1.1.2. 创建所有用户、所有主机配置文件
# 需以管理员身份运行
if (!(Test-Path -Path $PROFILE.AllUsersAllHosts)) {
New-Item -ItemType File -Path $PROFILE.AllUsersAllHosts -Force
}
3. ✈️代理设置
3.1. terminal 设置代理
# socks5代理
export ALL_PROXY=socks5://127.0.0.1:10808
# http代理
3.2. cmd 设置代理
# socks5代理
set ALL_PROXY=socks5://127.0.0.1:10808
set HTTP_PROXY=socks5://127.0.0.1:10808
# http代理
# 配置带验证的http proxy
set HTTP_PROXY=http://user:[email protected]:port
# 不带验证的
set http_proxy=http://127.0.0.1:1080
set https_proxy=http://127.0.0.1:1080
# 如果设置了验证
set HTTP_PROXY=http://proxy.com:port
set HTTP_PROXY_USER=username
set HTTP_PROXY_PASS=password
set HTTPS_PROXY=http://proxy.com:port
set HTTPS_PROXY_USER=username
set HTTPS_PROXY_PASS=password
# 清除proxy设置
set http_proxy=
set https_proxy=
3.3. powershell 设置代理
# socks5代理
$env:ALL_PROXY="socks5://127.0.0.1:11808"
# http代理
# PowerShell不支持socks5
$env:http_proxy="http://127.0.0.1:11809"
$env:https_proxy="http://127.0.0.1:11809"
# 带http认证的
$env:http_proxy="user:[email protected]:port"
$env:https_proxy="user:[email protected]:port"
4. 配置文件
# 主题部分
## 主题格式
# oh-my-posh --init --shell pwsh --config "你主题所在的路径,这里需要修改" | Invoke-Expression
# oh-my-posh --init --shell pwsh --config "$env:POSH_THEMES_PATH\主题名称.omp.json" | Invoke-Expression
## 默认主题
#oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\atomic.omp.json" | Invoke-Expression
### 将atomic主题替换为zash主题
# oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\zash.omp.json" | Invoke-Expression
### 将atomic主题替换为1_shell主题
oh-my-posh init pwsh --config "$env:POSH_THEMES_PATH\1_shell.omp.json" | Invoke-Expression
### 主题名称备选:
#1_shell
#atomic
#atomicBit
#chips
#cloud-native-azure
#jandedobbeleer
#kushal
##########################################################################
# 智能预测
## 启用预测 IntelliSense 并列表展示history
Set-PSReadLineOption -PredictionSource History
Set-PSReadLineOption -PredictionViewStyle ListView
##########################################################################
# 启用第三方模块
## 自动导入并启用着色模块
# Import-Module PSColor
## 自动导入美化终端的图标(好像和上面的有冲突,不能同时开启,根据需要二选一开启)
Import-Module -Name Terminal-Icons
## 这个工具主要做命令提示管理等操作,默认集成在了 PowerShell 中,不需要安装
Import-Module PSReadLine
##########################################################################
# 快捷键
## 删除上一个词
Set-PSReadLineKeyHandler -Chord "Ctrl+w" -Function BackwardDeleteWord
# 使用PowerShell内置的PSReadLine模块,它提供了一些快捷键的设置和自定义的功能。例如Set-PSReadLineOption -EditMode Emacs,这样就可以使用Ctrl+E跳转到行尾。
## 移动到当前行的起始位置
## 移动到当前行的末尾位置
Set-PSReadLineOption -EditMode Emacs
## 默认情况下,Tab 键的补全是行内补全,我们可以将其调整为带菜单的补全
Set-PSReadlineKeyHandler -Key Tab -Function MenuComplete
## 设置 Ctrl+Z 为撤销
Set-PSReadLineKeyHandler -Key "Ctrl+z" -Function Undo
## 设置向上键为后向搜索历史记录
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
## 设置向下键为前向搜索历史记录
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
##########################################################################
# powershell 单独设置代理部分,根据需要开启
## http代理设置
$env:http_proxy = "http://127.0.0.1:20002"
$env:https_proxy = "http://127.0.0.1:20002"
## socks代理设置
## 将“代理服务器地址:端口号”替换为您的SOCKS代理服务器地址及端口。
$env:SOCKS_SERVER = "socks5://127.0.0.1:20001"
## 设置SOCKS版本。SOCKS有SOCKS4和SOCKS5两个版本,运行以下命令设置:
$env:SOCKS_VERSION = "socks5"
## 设置不走代理的地址。有些地址不需要走代理,可以通过设置no_proxy环境变量指定:
# $env:no_proxy = "localhost,127.0.0.1,localaddress,.example.com"
#############################################################################
## winget tab自动补全
Register-ArgumentCompleter -Native -CommandName winget -ScriptBlock {
param($wordToComplete, $commandAst, $cursorPosition)
[Console]::InputEncoding = [Console]::OutputEncoding = $OutputEncoding = [System.Text.Utf8Encoding]::new()
$Local:word = $wordToComplete.Replace('"', '""')
$Local:ast = $commandAst.ToString().Replace('"', '""')
winget complete --word="$Local:word" --commandline "$Local:ast" --position $cursorPosition | ForEach-Object {
[System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterValue', $_)
}
}
## scoop tab自动补全
# enable completion in current shell
Import-Module "$($(Get-Item $(Get-Command scoop.ps1).Path).Directory.Parent.FullName)\modules\scoop-completion"
##############################################################################