新windows机器配置linux和终端

💻 环境配置指南

1. 安装 Scoop (Windows 包管理器)

非管理员终端 执行以下命令进行 Scoop 的安装:

1.1. 设置执行策略并安装

# 设置执行策略为 RemoteSigned,仅对当前用户有效
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
# 执行安装脚本
Invoke-RestMethod -Uri [https://get.scoop.sh](https://get.scoop.sh) | Invoke-Expression

1.2. 配置 Aria2 加速下载

ℹ️ 提示: 使用 Aria2 可以显著加速 scoop install git 等大型软件包的下载速度。

# 安装 Aria2 下载器
scoop install aria2
# 配置 Aria2:单任务最大连接数设置为 32
scoop config aria2-split 32
# 配置 Aria2:单服务器最大连接数设置为 16
scoop config aria2-max-connection-per-server 16
# 配置 Aria2:最小文件分片大小设置为 1M
scoop config aria2-min-split-size 1M

2. Windows Subsystem for Linux (WSL) 2. Windows 子系统 for Linux (WSL)

在终端输入 wsl,若未安装任何发行版,系统会提示安装。

PS C:\Users\kwz> wsl
适用于 Linux 的 Windows 子系统没有已安装的分发。
可通过安装包含以下说明的分发来解决此问题:
使用 “wsl.exe --list --online” 列出可用的分发
和 “wsl.exe --install <Distro>” 进行安装。

2.1. 列出可用发行版

⚠️ 注意: 可能需要配置网络代理 ('一些魔法') 才能成功列出发行版。

wsl.exe --list --online

2.2. 安装发行版 (以 Debian 为例)

通过命令行安装(可能需要重启才能生效):

wsl.exe --install Debian

或者,直接通过 Microsoft Store 搜索 Debian 并安装 (安装时请确保关闭网络代理)。

2.3. 检查安装状态

PS C:\Users\kwz> wsl -l -v
  NAME      STATE           VERSION
* Debian    Running         2

2.4. 启动特定发行版

如果有多个发行版,可以使用 -d 选项指定启动:

wsl -d <name>

3. Zsh 配置 (以 Debian/WSL 为例)

3.1. 安装 Zsh

sudo apt update
sudo apt install zsh -y
# 检查版本
zsh -v

安装后,系统会跳出一个界面,通常选择 2 进行格式化安装(创建默认配置文件)。

3.2. 检查可用 Shell

cat /etc/shells
# output (示例)
# /etc/shells: valid login shells
/bin/sh
/usr/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/usr/bin/dash
/usr/bin/tmux
/bin/zsh
/usr/bin/zsh

3.3. 设置 Zsh 为默认 Shell

chsh -s /usr/bin/zsh

3.4. 核心 .zshrc 配置要点

以下是需要替换到 .zshrc 文件中的核心配置要求:

1. 提示符 (Prompt) 设置

3.4. 核心 .zshrc 配置要点

以下是需要替换到 .zshrc 文件中的核心配置要求:

1. 提示符 (Prompt) 设置

  • 自定义颜色显示:
    • 绿色用户名 (filament)
    • 黄色主机名 (EVO-X1)
    • 蓝色当前路径 (如 ~/home/filament)

2. 历史记录管理

目的: 高效管理命令历史,避免重复,提升搜索体验。

  • 内存历史: 最多保存 10,000 条命令历史。
  • 磁盘历史: 写入磁盘的历史也保留 10,000 条。
  • 历史文件路径: ~/.zsh_history
  • 启用优化选项:
    • histignorealldups:新命令若已存在,则删除旧重复项。
    • sharehistory:多个终端窗口共享历史(实时同步)。
    • hist_save_no_dups:保存时不保留重复。
    • hist_reduce_blanks:自动去除命令前后的多余空格。

3. 快捷键绑定 (Key Bindings) - Emacs 风格

  • Ctrl+A → 跳转到行首
  • Ctrl+E → 跳转到行尾
  • Ctrl+U → 删除从光标到行首
  • Ctrl+K → 删除从光标到行尾
  • Ctrl+R → 反向搜索历史命令
  • Ctrl+W → 删除前一个单词
  • Alt+Backspace → 按词向前删除

4. 补全系统 (Completion)

  • 高亮显示: 补全过程启用颜色高亮(目录蓝色、可执行文件绿色等)。
  • 选择菜单: 自动进入选择菜单模式(按 Tab 可上下选择)。
  • 匹配策略:
    • 支持模糊匹配和大小写不敏感补全。
    • 小写匹配大写(如 git cogit commit)。
    • 支持 ._- 分隔符模糊匹配。
  • 特殊命令优化: kill 命令补全时显示进程列表,并红色高亮 PID。

5. 语法高亮 (Syntax Highlighting)

  • 加载插件: zsh-syntax-highlighting
  • 实时着色:
    • 正确命令 → 绿色
    • 错误/不存在命令 → 红色
    • 文件名、参数等 → 不同颜色区分
# ===================================================
# 提示符设置:显示用户名、主机名和当前路径
# ===================================================

# 加载颜色支持
autoload -U colors
colors

# 自定义 PS1 提示符
# 格式说明:
# %F{green}%n%f  - 用户名 (绿色)
# @              - 分隔符
# %F{yellow}%m%f - 主机名 (黄色)
# :              - 分隔符
# %F{blue}%~%f   - 当前路径 (~ 表示 HOME 目录) (蓝色)
# $              - 普通用户提示符(root 显示 #)
PS1='%F{green}%n%f@%F{yellow}%m%f:%F{blue}%~%f$ '


# ===================================================
# 历史记录设置
# ===================================================

# 设置内存中保存的历史命令数量
HISTSIZE=10000

# 设置写入磁盘的最大历史命令数量
SAVEHIST=10000

# 指定历史记录文件的存储位置
HISTFILE=~/.zsh_history

# 启用历史选项:
# histignorealldups     - 新命令若已在历史中,则删除旧的重复项
# sharehistory          - 多个终端共享历史记录(实时同步)
# hist_save_no_dups     - 保存时自动去重
# hist_reduce_blanks    - 删除命令前后空格再记录
setopt histignorealldups sharehistory hist_save_no_dups hist_reduce_blanks


# ===================================================
# 快捷键设置
# ===================================================

# 使用 Emacs 风格的快捷键(即使 EDITOR 设为 vi)
# 常用组合:
#   Ctrl+A → 跳转到行首
#   Ctrl+E → 跳转到行尾
#   Ctrl+U → 删除从光标到行首的内容
#   但是我这里的Ctrl+U 是删除整行的内容 需要在下面手动指定 
#   Ctrl+K → 删除从光标到行尾的内容
#   Ctrl+R → 反向搜索历史命令
bindkey -e

bindkey '^U' backward-kill-line


# ===================================================
# 补全系统设置(现代智能补全)
# ===================================================

# 加载 zsh 的自动补全系统
autoload -Uz compinit

# 初始化补全系统(必须调用,否则 Tab 补全功能受限)
compinit

# 启用 dircolors 颜色规则(用于 ls 和补全着色)
eval "$(dircolors -b)"

# 补全过程中显示描述信息,例如 "specify: directory name"
zstyle ':completion:*' auto-description 'specify: %d'

# 定义补全器顺序:
# _expand      - 展开别名或 ~ 等
# _complete    - 正常补全
# _correct     - 拼写纠错(如 git commt → commit)
# _approximate - 模糊匹配(允许打字错误)
zstyle ':completion:*' completer _expand _complete _correct _approximate

# 当找到补全项时,显示提示文字:"Completing xxx"
zstyle ':completion:*' format 'Completing %d'

# 不对补全组使用额外名称分组显示
zstyle ':completion:*' group-name ''

# 自动进入选择菜单模式
#zstyle ':completion:*' menu select=2
zstyle ':completion:*' menu select=2

# 默认使用菜单模式进行补全 ,直接使用方向键选择
#zstyle ':completion:*:default' menu yes select


# 使用 LS_COLORS 中的颜色规则对补全列表进行着色
# (例如:目录蓝色、可执行文件绿色等)
zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS}

# ❗注意:以下这行已被移除,因为它会清空所有颜色!
# zstyle ':completion:*' list-colors ''  ← 错误配置,会导致无颜色

# 在补全列表较多时显示提示信息
zstyle ':completion:*' list-prompt %SAt %p: Hit TAB for more, or the character to insert%s

# 匹配策略:
# ''                    - 精确匹配
# m:{a-z}={A-Z}         - 小写可匹配大写(大小写不敏感)
# m:{a-zA-Z}={A-Za-z}   - 支持驼峰/下划线互换(部分模糊)
# r:|[._-]=* r:|=* l:|=* - 允许部分模糊匹配,如 "git co" 匹配 "git checkout"
zstyle ':completion:*' matcher-list '' 'm:{a-z}={A-Z}' 'm:{a-zA-Z}={A-Za-z}' 'r:|[._-]=* r:|=* l:|=*'

# 在滚动选择时显示当前选中项的位置
zstyle ':completion:*' select-prompt %SScrolling active: current selection at %p%s

# 禁用旧式的 compctl 命令(推荐使用新的 zstyle 方式)
zstyle ':completion:*' use-compctl false

# 启用详细输出模式,显示更多补全信息
zstyle ':completion:*' verbose true

# 为 kill 命令定制补全:显示进程颜色(红色高亮 PID)
zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31'

# 为 kill 命令指定要显示的进程信息格式
zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd'


# ===================================================
# 语法高亮(输入命令时实时着色)
# ===================================================
# 加载 zsh-syntax-highlighting 插件
# 功能:正确命令绿色,错误命令红色,提升可读性和安全性
# 原始 https://github.com/zsh-users/zsh-syntax-highlighting.git
# 镜像站 git clone https://githubfast.com/zsh-users/zsh-syntax-highlighting.git
# 在 ~/.zsh/zsh-syntax-highlighting 目录下,需要创建.zsh文件夹
source ~/.zsh/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh


# ===================================================
# 别名与实用工具
# ===================================================

# 启用 ls 命令的颜色高亮显示
alias ls='ls --color=auto'

# 常用别名:以长格式列出文件,并启用颜色
alias ll='ls -l --color=auto'


# >>> mamba initialize >>>
# !! Contents within this block are managed by 'micromamba shell init' !!
export MAMBA_EXE='/mnt/hdd-ws/users/filament/.local/bin/micromamba'
export MAMBA_ROOT_PREFIX='/mnt/hdd-ws/users/filament/.local/share/mamba'
__mamba_setup="$("$MAMBA_EXE" shell hook --shell zsh --root-prefix "$MAMBA_ROOT_PREFIX" 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__mamba_setup"
else
    alias micromamba="$MAMBA_EXE"  # Fallback on help from micromamba activate
fi
unset __mamba_setup
# <<< mamba initialize <<<



# 绑定 Ctrl+Left 和 Ctrl+Right 用于跳过单词
bindkey "\e[1;5D" backward-word    # Ctrl+Left
bindkey "\e[1;5C" forward-word     # Ctrl+Right
posted @ 2025-10-24 11:18  phrink  阅读(5)  评论(0)    收藏  举报