使用hyper+zsh打造更好用的Windows 10 WSL终端
前言
适用于 Windows 的 Linux 子系统(Windows Subsystem on Linux, WSL)是一个能够在Windows 10上原生运行Linux二进制可执行文件的兼容层,只需要通过简单的配置,就能够在微软应用商店上下载自己喜欢的Linux发行版。
经过两年的开发,WSL也十分完善,本文记录一些自己在WSL上的折腾,使用zsh+ohmyzsh+hyper以及一些插件来达到美观,实用的目的。
开启WSL
- 设置->更新和安全->开发者选项,选择开发者模式
- 控制面板->程序->程序和功能->启动或关闭Windows功能,勾选适用于Linux的Windows子系统
重启电脑后进入应用商店搜索Linux安装即可,我自己选择的是Ubuntu18.04LTS。
oh my zsh
1.安装zsh
# 安装zsh
sudo apt-get install zsh
# 将zsh设置为默认shell
chsh -s /bin/zsh
2.安装oh my zsh
# 安装oh my zsh
wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | sh
3.主题选择
我自己使用的主题是ys,其他主题的介绍见oh-my-zsh theme
# 打开配置文件
vim ~/.zshrc
将ZSH-THEME改成ys
ZSH_THEME="ys"
# 更新配置
source ~/.zshrc
4. 插件
这里推荐一款自动补齐插件,linux下有不少命令,虽然wsl也支持补全,但是使用上总有点难受,因此这个推荐还是很实用的。
下载插件
wget http://mimosa-pudica.net/src/incr-0.2.zsh
将此插件放到oh-my-zsh目录的插件库下
cd ~/.oh-my-zsh/plugins/
# 创建文件夹incr
mkdir incr
# 复制文件到此文件
cp ~/incr-0.2.zsh ./incr
#打开配置文件
sudo vi ~/.zshrc
在~/.zshrc文件末尾加上
source ~/.oh-my-zsh/plugins/incr/incr*.zsh
更新配置
source ~/.zshrc
hyper
Hyper Terminal 是一个基于JS/HTML/CSS的终端(Terminal)指南,类似于macOS自带的terminal,具有更高的自定义性。
1.下载安装
直接进入Hyper的官网下载Windows版本即可。Hyper官网
2.启动进入WSL
我们希望打开终端即可进入WSL,但是hyper默认是进入windows的cmd,因此需要对其进行一定的配置。
打开菜单->Edit->'Preferences',打开的是配置文件
# 编辑shell和shellArgs
shell: 'C:\\Windows\\System32\\wsl.exe',
shellArgs: ['~'],
这样我们打开hyper即可直接进入WSL.
3.主题和插件
使用以管理员身份打开打开Hyper,选择菜单->Plugins->Install hyper CLI command in PATH
使用以管理员身份打开打开Powershell/cmd
# 安装主题verminal
hyper i verminal
# 安装插件
# hypercwd,让你打开新的Tab页时自动保持上一个Tab页的路径
hyper i hypercwd
# hyper-search,支持对命令行窗口里的内容全文检索
hyper i hyper-search
# hyper-opacity,解决windows下hyper原生不支持的窗口透明化
hyper i hyper-opacity
# hyper-always-on-top,提供windows下窗口置顶的功能
hyper i hyper-always-on-top
安装完主题后可能会影响原有的字体等设置,因为主题本身也有一个主题配置文件,因此我们可以对主题包的配置文件进行修改。
说明以下,因为hyper本身会对插件进行版本控制以及更新,所以不建议在插件的配置文件上直接修改,因为修改会被覆盖掉,所以最好的还是在hyper的配置文件中修改。
安装完插件之后,打开hyper,菜单->Edit->Preferences,在config的最后加入以下内容,根据个人喜好设置透明度等
module.exports = {
config: {
// for advanced config flags please refer to https://hyper.is/#cfg
opacity: {
focus: 0.7,
blur: 0.7
},
verminal: {
fontFamily: 'Consolas',
fontSize: 16
},
alwaysOnTop: {
debug: false,
default: false // enabled on application start
}
},
其实正常来说直接在Hyper终端上运行hyper命令即可,但是我自己在尝试的时候出现了以下问题,无法正常使用
# ghost @ LAPTOP-7J91U8JD in ~ [17:23:08]
$ hyper i hyperpower
Warning! Due to WSL limitations, you can't use CLI commands here. Please use Hyper CLI on cmd, PowerShell or GitBash/CygWin.
Please see: https://github.com/Microsoft/WSL/issues/1494
Plugin verminal (1.4.5) loaded.
Plugin hypercwd (1.4.0) loaded.
Plugin hyper-pane (2.1.4) loaded.
Plugin hyper-opacity (1.0.0) loaded.
Plugin hyper-always-on-top (1.0.4) loaded.
Disabling Chromium GPU blacklist
running in prod mode
electron will open file://C:\Users\Ghost\AppData\Local\hyper\app-3.0.2\resources\app.asar\index.html
Your config use deprecated `cmd` in key combination. Please use `command` instead.
Hyper CLI already in PATH
Hyper CLI installed You may need to restart your computer to complete this installation process.
Your config use deprecated `cmd` in key combination. Please use `command` instead.
Checking for notification messages
No matching notification messages
因此决定使用powershell来进行插件与主题的安装
随便聊聊
其实很早之前就开始折腾了,一开始是WSL,然后是美化,然后今天看到了hyper,我觉得学习到的东西不记录下来,很容易就遗忘了,今天在写这篇笔记的时候,很多内容都是重新翻阅了一遍,过程可能跟自己以前的操作有点不一样,所以如果出现一些问题也请见谅。希望自己能养成良好记笔记的习惯。
杂谈
到2019年05月为止,Microsoft商店已有Kali Linux、Arch Linux、Ubuntu、Debian、openSUSE等Linux发行版,在WSL上你可以体验到绝大多数Linux系统能做到的事情,不过由于WSL中没有真正的Linux内核,因此无法运行内核模块,包括设备驱动程序,同时使得WSL无法运行Docker等服务,至少非家庭版是无法运行的。
在过去的一年的时间里,我使用WSL完成了操作系统的部分作业(一些操作涉及到内核,所以无法进行操作),数据挖掘的学习、代码的编译都是在WSL上完成的,对我这种不想装双系统(离不开windows),又羡慕Linux的便利的人,WSL还是带给了我很多的便利,我也是非常喜欢这个特性。
在BUILD2019大会上,微软推出了Windows Subsystem for Linux 2(WSL2),为WSL带来了重大更新,并且支持Linux Docker容器。微软一下子成为了"Linux"最大的发行商,真是颇具戏剧性,微软近年来逐渐拥抱开源,收购github,希望未来的发展越来越好。
微软发布Windows Linux子系统 2:性能大提升
参考博客
- WSL + Ubuntu + ZSH + Hyper终端
- oh-my-zsh,让你的终端从未这么爽过
- Windows10下打造漂亮好用的WSL(Linux)终端
- win10终端(WSL)优化 : 高颜值 windows命令行工具 Hyper全面介绍