#声明:此文本人原创,转载请标注出处。
懒得弄博客了,就发布csdn吧,虽然挺恶心人的。
一直想整个windows下实现zsh+ohmyzsh的方案,奈何网上找遍了没有一个想要的,几乎没有windows下的方案,所以自己整了个,分享给广大的windows使用者,思想仅供参考,如果不想用alacritty可以使用其他任何的终端软件参考此篇文章的配置思路,都是可以通用的。
效果展示
效果:
需要准备的软件:
- alacritty本体:
https://github.com/alacritty/alacritty - alacritty-theme:
https://github.com/eendroroy/alacritty-theme - ohmyzsh:
sh -c “$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)”
安装配置
安装
alacritty安装省略
下载解压即可使用
配置
windows配置目录
C:\Users\用户名\AppData\Roaming\alacritty\alacritty.yml
内容
import:
- S:\soft\DevEnvironment\alacritty\alacritty-theme\themes\one_dark.yaml
font:
normal:
family: "YaHei Consolas Hybrid"
shell:
program: C:\Windows\System32\bash.exe
env:
LANG: en_US.UTF-8
说明:
- utf-8 解决中文乱码
- shell program 指定打开的为wsl子系统
这里的bash.exe位置可以通过在cmd运行where bash寻找
安装后觉得不好看,于是找到了alacritty-theme
alacritty-theme安装
https://github.com/eendroroy/alacritty-theme
直接从github下载代码,然后解压到任何喜欢的文件夹下。
安装上方配置import即可使用
安装后还是觉得代码颜色不够高端,于是想起了zsh+ohmyzsh,
但是windows不能装zsh,决定安装wsl
说一下为什么我要安装wsl而不是使用git-win或者cygwin来做linux终端,一开始我安装的cygwin,但是配置好zsh后打开终端有2秒的延迟zsh才能出来,就很难受。一开始本来是不想装wsl,总觉得会占地,臃肿,最后不得已安装了,效果当然是wsl最好。
wsl安装
wsl有wsl1,wsl2 ,
这里是我从ChatGPT中问的原因
### WSL1:
1. **架构:** WSL1使用一个由微软开发的自定义内核(WSL 1 Linux Kernel),该内核翻译 Linux 系统调用为 Windows 系统调用。这使得 Linux 程序能够在 Windows 上运行,但是由于性能方面的一些限制,特别是文件系统性能上的限制,WSL1不支持所有 Linux 内核特性。
2. **性能:** WSL1的性能相对较低,特别是在文件系统访问方面,因为它需要将 Linux 文件系统操作转换为 Windows 文件系统操作。
3. **文件系统:** WSL1使用一个通过封装实现的文件系统,不直接使用实际的 Linux 文件系统。
### WSL2:
1. **架构:** WSL2使用了真正的 Linux 内核。微软与 Linux 社区合作,将一个轻量级的 Hyper-V 虚拟机(VM)嵌入到 Windows 系统中,其中运行了一个完整的 Linux 内核。这意味着 WSL2 不再依赖于系统调用的翻译,而是可以直接在 Linux 内核上运行。
2. **性能:** WSL2通常比WSL1具有更好的性能,特别是在文件系统访问和其他与系统调用相关的操作上,因为它不再需要进行复杂的调用翻译。
3. **文件系统:** WSL2中,Linux 文件系统直接映射到虚拟机中的 Linux 内核,而不是通过封装进行转换。这提供了更好的文件系统性能和更好的兼容性。
4. **网络性能:** WSL2支持更好的网络性能,因为它可以直接访问 Windows 系统的网络堆栈。
5. **Docker 支持:** WSL2对 Docker 支持更好,可以直接在 WSL2 上运行 Docker 容器。
总结: wsl1使用windows内核转linux,wls2使用linux原生内核 使用hyperv技术开启的,文件系统操作更好,
选择: 我选择wsl1 主要是我不喜欢开启hyperv 莫名端口占用以及影响性能,况且我只用linux的一些好用工具。
安装没得说,直接应用商店安装。
zsh ohmyzsh安装
apt install zsh
sh -c “$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)”
如果下载不下来可以手动安装或代理,具体官方有教程
安装后发现不能在终端执行windows的一些命令,体验很不好。
于是经过灵光一闪,在linux配上windows的环境变量如何?
开搞
wsl 环境变量配置
在~/.bashrc文件中配置环境变量,添加到最后即可
export WIN_PATH="/mnt/s/soft/DevEnvironment/jdk/jdk-17.0.2/bin:/mnt/s/soft/DevEnvironment/Git/bin:/mnt/s/soft/DevEnvironment/NodeJS"
export SYS_PATH="/mnt/c/Windows:/mnt/c/Windows/System32:/mnt/c/Windows/System32/OpenSSH"
export PATH="$PATH:$WIN_PATH:$SYS_PATH"
这是我自己的,参考下格式就行,主要就是把windows环境变量中的内容配置到wsl中,wsl可以通过which 命令
来寻找命令位置,windows是where 命令
寻找。
记得用户的path和系统的path都需要配置。
配置好后又有问题了,发现bat的文件不能在wsl中直接运行,这就难受了,还得用cmd窗口,那就没意义了,于是我又问了ChatGpt,果然不负我的期望
wsl中运行bat脚本
经过我询问ChatGPT,他告诉我,wsl中运行bat需要
cmd.exe /c 文件.bat
完事。
不行还是有问题,安装zsh配置好主题后打开alacritty默认不进入zsh
配置wsl默认进入zsh
分析流程,开打终端,默认使用的是bash,然而bash在运行前会先运行.bashrc文件来初始化,所以在.bashrc文件最后添加一行命令 zsh
,哎 行了。
整合TotalCommander
不得不说:totalcommander 真的好用,尤其是飞扬时空,免折腾 还能免费用。
使用的是飞扬时空的tc,替换自带的ctrl+g打开cmd窗口为alacritty。
配置:
1 在tc中按下ctrl+e打开配置界面,
2 在最下方usercmd.ini中添加配置
3 文件名随意,字段内容如下
命令:
S:\soft\DevEnvironment\alacritty\Alacritty-v0.12.0-portable.exe
参数:
--working-directory %P
启动路径:
S:\soft\DevEnvironment\alacritty\
说明:
--working-directory是alacritty自带的参数命令,代表打开一个工作目录
%P是tc中的命令,代表当前窗口的路径
%S 是tc中命令,代表是选中文件的路径,这是不需要只是记录下。
4 更改ctrl+g为alacritty
选项=》配置=》其他=》 (更改快捷键),把刚才配置的文件指定给这个快捷键。
完事,这时使用totalcommander打开 ctrl+g 打开终端,漂亮,速度还快,还能自动定位文件夹,美滋滋,又可以愉快的敲命令了。
总结:
ChatGpt真的好用,一些搜不到的问题,直接一问chatGpt,回答的清清楚楚,真是生产力工具啊。