oh-my-zsh-好看好用的shell-windows-cygwin
上一级页面:index-windows
前言
但是比起主题受限的 PowerShell,我想可能还是 zsh 更加有吸引力;
我们先安装git for cygwin,见cygwin-构建最小系统
我们最终目的只是在Windows上跑一个完整的zsh
在cygwin上安装zsh
从社区活跃度,项目发展历程等考虑,这里推荐选择使用cygwin:
首先下载安装cygwin,并构建一套最小系统:cygwin-构建最小系统
以管理员身份运行cygwin,
首先安装apt-cyg:命令行软件包管理器apt-cyg
安装依赖,注意需要使用cygwin专版的git
apt-cyg install wget curl git
安装cyg-vim,
apt-cyg install vim
安装过程中多次报warnings,说wget没安装
以防万一,等待安装结束,再安装一次wget
apt-cyg install wget
使用的时候报错就打开install.exe,会发现需要你安装对应的依赖,安装上就好了
安装oh-my-zsh
安装zsh
apt-cyg install zsh
然后,我们安装 oh-my-zsh:
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
# ↑ 通过 curl
或者
通过 wget ↓
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
当然,修改 host 文件,设置终端代理过于麻烦;我们可以科学上网后直接访问上述命令中的地址,获得脚本的内容后放到某个文件夹下,再使用 zsh 去执行脚本即可;
zsh如何使用
此时直接执行命令 zsh,就应该能使用超级高效的 oh-my-zsh 了。
zsh
但当我们开启第二个 Cygwin 窗口或者重启 Cygwin 的时候,默认使用的依然是 bash。那怎么样才能默认就使用 zsh 呢?
有几个个方法可以做到:
- 在
~/.bashrc
文件最后添加代码exec /bin/zsh
,让 zsh 来替代 bash,就跟刚才我们直接执行 zsh 的操作一样 - 右键点击 Cygwin 启动图标查看属性,更改其目标为
D:\cygwin64\bin\mintty.exe /bin/zsh -l
。当然其中的路径需要修改成 Cygwin 的安装路径。 - 在安装 zsh 之后,cygwin 的 bin 目录下会多一个 mkzsh 脚本。在cygwin中执行此脚本,会在 Cygwin 的安装根目录下生成一个 zsh.bat 文件。执行此文件也可以使用带 zsh 登录的命令行界面。只不过……这个脚本开启的是 Windows 的 cmd.exe……比起 Mintty 的界面丑多了……所以还是推荐使用之前说的第二种方法。
最终方案:
一方面,如果从cygwin.bat
启动脚本启动的,修改这个脚本,将bash更改为zsh
另外一方面,如果通过 Cygwin 启动图标
来启动的,更改其目标为 D:\cygwin64\bin\mintty.exe /bin/zsh -l
注意这里前半段是你的cygwin安装目录
与windows terminal等的集成见后文
设为系统文件 + 隐藏文件
安装后脚本会在 ~
目录下创建 .oh-my-zsh
目录,和 ~/.zshrc
在同一个目录中;
这个 ~
目录对应的就是cygwin的安装目录下的/home/username
,默认是
C:\cygwin64\home\username
注意不要删掉它们;
如果觉得碍眼可以把它们设为系统文件 + 隐藏文件(cmd 中的 attrib +s+h
或者 PowerShell 中的 $file.Attributes += 'hidden, system'
),就不会在资源管理器中看到它们了;
安装插件
因为这里 zsh 似乎没有包含一部分插件,所以若部分插件找不到,可以在这里下载,之后复制到 ~/.oh-my-zsh
文件夹的对应位置中即可;
配置oh-my-zsh
安装完成之后,我们就要将调教好的 zsh 终端增加到工作场景中集成了:
首先不建议将任何 Powerline 终端集成到 Jetbrains 的任何 IDE 中;因为 Windows 上的 Jetbrains IDE 的终端渲染比较的奇特:主要就是行间距太大,导致显示的图标会非常不好看。
字体问题(补充
因为 zsh 还是借助 Windows 的 conhost 或者其他终端软件运行,所以并不需要在~/.zshrc
文件中修改字体;
zsh集成到 Windows Terminal
这里选择的默认方式是
在 ~/.bashrc
文件最后添加代码 exec /bin/zsh
,让 zsh 来替代 bash,就跟刚才我们直接执行 zsh 的操作一样
{
"list": [
{
"commandline": "C:\\cygwin64\\bin\\zsh.exe -i -l",
"guid": "{29761000-62C2-72BE-1C6C-68392DBB69A8}",
"hidden": false,
"icon": "C:\\cygwin64\\Cygwin-Terminal.ico",
"name": "cygwin-zsh",
"useAcrylic": false
}
]
}
}
这样没什么坏处,在该脚本初始化过程中会有大量系统变量地址映射
失败会报错,并且产生巨量输出(使用 MinTTY 也会产生这些输出),
集成到 VS Code
和上面一样,可以直接运行 zsh.exe
启动:
从工具栏中选择 文件 -> 首选项 -> 设置,打开设置页;在 功能 / 终端 中找到任何一个 在 settings.json 中编辑 按钮来打开 vscode 的配置文件;并且加上下面内容:
{
"terminal.integrated.profiles.windows": {
"Git Bash": {
"source": "Git Bash"
},
"cygwin-zsh": {
"path": ["C:\\cygwin64\\bin\\zsh.exe"],
"args": ["-i", "-l"],
"icon": "git-commit"
}
}
}
上面的配置指定了命令行、参数以及终端字体(可以和文本编辑器使用不同的字体);
命令参数中的 cd $PWD
是切换到当前目录,如果报错也可以不加(似乎还是会跳转到当前目录);
在 VS Code 中也有相当数量的 PL 字体存在行间距过大的问题,似乎也可以通过调整解决;
启动后会直接跳转到你的项目目录下,但是如果没有事先将 C:\git-sdk-64\usr\bin\
增加到系统变量中,输入部分 Linux 命令可能会提示命令未找到错误;
参考、引用、致谢
Cygwin 上安装 Oh-My-Zsh – Chris' Blog (popon.top)
在 Windows 10 中使用 zsh 作为默认终端 - 七海の参考書 (shiraha.cn)
- zsh+on-my-zsh配置教程指南 本文地址
- WSL + oh my zsh 更好看的 shell - 知乎
- zsh+on-my-zsh配置教程指南(程序员必备)【已备份】 - SegmentFault 思否
- wting/autojump--官方文档
- powerline/fonts
- 终极 Shell macshuo.com!
- Setting up Windows Subsystem for Linux with zsh + oh-my-zsh + ConEmu blog.joaograssi.com!
- Oh-my-zsh's icons don't show correctly · Issue #1517 · microsoft/WSL github.com!
- chinanf-boy/bat-zh: 🇨🇳翻译
- 终极 Shell
- Ubuntu 16.04下安装zsh和oh-my-zsh
- Ubuntu 下安装oh-my-zsh
- 掘金-Shell 中的极品-- Zsh
- CentOS 7下autojump无法使用的可能原因
- oh-my-zsh配置你的zsh提高shell逼格终极选择
- zsh oh-my-zsh 插件推荐
- zsh 全程指南-推荐
- iterm主题下载
- 程序员内功系列--iTerm与Zsh篇
- Mac 下配置终端环境 iTerm2 + Zsh + Oh My Zsh + tmux