WSL 从最初功能不全 bug 遍地都是,到如今除了少数几个比较顽固的 bug 外,基本足以正常使用了。但自带终端模拟器的体验依然很是糟糕,并且在能够预期的将来都不会有太大的长进了。我是从去年 8 月开始开发 wsl-terminal(中文页面)的,期间由于想不到能够添加什么功能而搁置了比较长时间。最近心血来潮,添加了不少实用功能,用户体验也会上升不少。html
但愿有在使用的朋友能够多反馈下意见建议,若是以前没有尝试过,也能够体验一下,软件是一个 1.6 MB 的压缩包,解压后便可使用,不会往系统中写入任何东西(若是想添加到开始菜单或者右键菜单,可使用 tools 中的工具)。linux
用于 Windows Subsystem for Linux (WSL) 的终端模拟器,基于 mintty 和 wslbridge。git
查看更多截图。github
cmd.exe
或 WSL 里运行 bash -c "wget https://github.com/goreliu/wsl-terminal/releases/download/v0.8.1/wsl-terminal-0.8.1.7z && 7z x wsl-terminal-0.8.1.7z"
。open-wsl.exe
能够在当前目录打开一个 WSL 终端模拟器(wsl-terminal 须要放置在本地的 NTFS 分区上,缘由)。tools/1-add-open-wsl-terminal-here-menu.js
(帮助) 来添加一个 Open wsl-terminal Here
右键菜单到资源管理器上 (运行 tools/1-remove-open-wsl-terminal-here-menu.js
能够将其删除)。 若是你使用 Total Commander, 能够参考 在 Total Commander 中使用 wsl-terminal 。run-wsl-file.exe
能够在 wsl-terminal 里运行任何 .sh
(以及任何其余的可执行文件,好比 .py
.pl
文件) 脚本文件,你能够在文件打开方式里设置使用它来打开文件。vim.exe
可使用 WSL 中的 vim 打开任何文件 (在 wsl-terminal 中),支持在打开方式中配置。若是你使用其余编辑器,能够把 vim.exe
重命名成 emacs.exe
nvim.exe
nano.exe
等等,会调用对应的编辑器打开。按键 | 功能 |
---|---|
Alt + Enter |
全屏 |
Alt + F2 |
新建窗口 |
Alt + F3 |
搜索文本 |
Ctrl + [Shift] + Tab |
切换窗口 |
Ctrl + = + - 0 |
缩放 |
Ctrl + Click |
打开光标处的文件、目录名或者网址 |
将 wsl-terminal 绑定到快捷键。shell
用法: open-wsl [选项]... -a: 激活在运行的 wsl-terminal 窗口。 若是 use_tmux=1,会 attach 到正在运行的 tmux 会话上。 -l: 运行一个 login shell(若是 use_tmux=1 则失效)。 -c command: 运行命令 (例如 -c "echo a b; echo c; cat")。 -e commands: 运行后边的全部命令 (例如 -e echo a b; echo c; cat)。 -C dir: 进入到 dir 目录中,WSL 目录(例如 /home/username)。 -W dir: 进入到 dir 目录中,Windows 目录(例如 c:\Users\username)。 -d distro: 切换发行版。 -b "options": 传递额外的选项给 wslbridge。 -B "options": 传递额外的选项给 mintty。 -h: 显示帮助信息。
-B
和 -b
后能够添加的选项,请参考 mintty 参数 和 wslbridge 参数。vim
用法: cmdtool [选项]... wcmd: 使用 cmd.exe /c 运行 Windows 程序。 wstart: 使用 cmd.exe /c start 运行 Windows 程序。 update: 检查更新,若是有更新能够直接升级。 killall: 杀死全部的 WSL 进程。 install cbwin: 安装 cbwin。 install dash: 安装 Cygwin 中的 dash(用于调试)。 install busybox: 安装 Cygwin 中的 busybox(用于调试)。
tools
目录下的工具:bash
文件名 | 功能 |
---|---|
1-add-open-wsl-terminal-here-menu.js | 添加 Open wsl-terminal Here 右键菜单到资源管理器上。 |
1-remove-open-wsl-terminal-here-menu.js | 移除 Open wsl-terminal Here 右键菜单。 |
2-add-wsl-terminal-dir-to-path.js | 将 wsl-terminal 目录添加到 Path 环境变量里。 |
2-remove-wsl-terminal-dir-from-path.js | 从 Path 环境变量中移除 wsl-terminal 目录。 |
3-write-distro-guids-to-config-file.js | 将全部发行版的 guid 写入到配置文件 etc/wsl-terminal.conf 中。 |
4-create-start-menu-shortcut.js | 建立一个开始菜单快捷方式,指向 open-wsl -C ~ 。 |
4-create-start-menu-shortcut-login-shell.js | 建立一个开始菜单快捷方式,指向 open-wsl -l 。 |
4-remove-all-start-menu-shortcuts.js | 移除全部 wsl-terminal 的开始菜单快捷方式。 |
双击 .js
文件便可运行。若是 .js
文件被某个编辑器关联上了,能够修改打开方式为 Microsoft (R) Windows Based Script Host
,或者在 tools
目录运行一个 cmd.exe
,而后用 wscript xxx.js
运行对应文件。微信
etc/wsl-terminal.conf
是 wsl-terminal 的配置文件:编辑器
[config] title="窗口标题" shell=bash use_tmux=0 ;icon= ;distro_guid=
etc/themes/
目录下的是主题文件,使用主题。工具
etc/minttyrc
是 mintty 的配置文件, mintty 帮助。
在 wsl-terminal
里打开 open-wsl.exe
,而后运行 ./cmdtool update
能够检查 wsl-terminal 的最新版本而后升级。若是下载速度过慢,能够先使用其余方法从发布页面下载 wsl-terminal-v{version}.7z
文件,而后将其放入到 wsl-terminal
目录,而后运行 ./cmdtool update
。
该工具依赖 wget
和 7z
命令(安装方法。Ubuntu: apt install wget p7zip-full
, Archlinux: pacman -S wget p7zip
)。
升级过程不会覆盖配置文件,etc/wsl-terminal.conf
和 etc/minttyrc
会被放置到 etc/wsl-terminal.conf.pacnew
和 etc/minttyrc.pacnew
。升级后 bin
目录会残余一些 .bak
文件,由于这些文件还在运行,不能被删除。下一次升级时,会将以前的 .bak
文件所有删除,你也能够等那些进程退出后手删除那些文件。
etc/wsl-terminal.conf
中设置 use_tmux=1
。若是版本号低于 0.8.1
,还须要添加 attach_tmux_locally=1
。~/.bashrc
(若是配置的是 shell=bash
)或者 ~/.zshrc
(若是配置的是 shell=zsh
):[[ -z "$TMUX" && -n "$USE_TMUX" ]] && { [[ -n "$ATTACH_ONLY" ]] && { tmux a 2>/dev/null || { cd && exec tmux } exit } tmux new-window -c "$PWD" 2>/dev/null && exec tmux a exec tmux }
而后 open-wsl
就会使用 tmux 了。
使用 open-wsl -d distro
(在 cmd.exe
里运行)来切换发行版:
# 列出全部发行版 > wslconfig /l Legacy (默认) Ubuntu # 使用 Ubuntu(会运行 wslconfig /s Ubuntu 而后打开 wsl-terminal) > open-wsl -d Ubuntu # Ubuntu 已是默认的发行版了 > wslconfig /l Ubuntu (默认) Legacy
若是你不想修改默认的发行版,能够在 etc/wsl-terminal.conf
里设置 distro_guid
:
运行 tools/3-write-distro-guids-to-config-file.js
(帮助),而后会有窗口弹出结果:
result has been written to ..\etc\wsl-terminal.conf: ; Legacy ;distro_guid={12345678-1234-5678-0123-456789abcdef} ; Ubuntu ;distro_guid={47a89313-4300-4678-96ae-e53c41a79e03} remove the ; before distro_guid to use the distro.
能够去掉 distro_guid 前边的 ; 来使用对应的发行版。
若是你想经过命令行将 distro_guid 传递给 open-wsl
:
# 将 distro guid 传递给 wslbridge > open-wsl -b "--distro-guid {47a89313-4300-4678-96ae-e53c41a79e03}"
确保已经在 WSL 里安装了这些 wget
tar
xz
gzip
p7zip
(安装方法。Ubuntu: apt install wget tar xz-utils gzip p7zip-full
, Archlinux: pacman -S wget tar xz gzip p7zip
)。
运行 build.bat
。
MIT
付费解决 Windows、Linux、Shell、C、C++、AHK、Python、JavaScript、Lua 等领域相关问题,灵活订价,欢迎咨询,微信 ly50247。