WSL 从最初功能不全 bug 遍地都是,到现在除了少数几个比较顽固的 bug 外,基本足以正常使用了。但自带终端模拟器的体验依然非常糟糕,而且在可以预期的未来都不会有太大的长进了。我是从去年 8 月开始开发 wsl-terminal(中文页面)的,期间因为想不到可以添加什么功能而搁置了比较长时间。最近心血来潮,添加了很多实用功能,用户体验也会上升很多。
希望有在使用的朋友可以多反馈下意见建议,如果之前没有尝试过,也可以体验一下,软件是一个 1.6 MB 的压缩包,解压后即可使用,不会往系统中写入任何东西(如果想添加到开始菜单或者右键菜单,可以使用 tools 中的工具)。
多谢大家支持。
用于 Windows Subsystem for Linux (WSL) 的终端模拟器,基于 mintty 和 wslbridge。
查看更多截图。
从这里下载最新版本并解压。
运行 open-wsl.exe
可以在当前打开一个 WSL 终端模拟器(当前目录需要在本地的 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, 可以参考 Use wsl-terminal with Total Commander 。
run-wsl-file.exe
可以在 wsl-terminal 里运行任何 .sh
(以及任何其他的可执行文件,比如 .py/.pl/.php
文件) 脚本文件,你可以在文件打开方式里设置使用它来打开文件。
vim.exe
可以使用 WSL 中的 vim 打开任何文件 (在 wsl-terminal 中),支持在打开方式中配置。如果你使用其他编辑器,可以把 vim.exe
重命名成 emacs.exe/nvim.exe/nano.exe/less.exe/...
等等。
Alt + Enter
: 全屏
Alt + F2
: 新建窗口
Alt + F3
: 搜索文本
Ctrl + [Shift] + Tab
: 切换窗口
Ctrl + =+/-/0
: 缩放
Ctrl + Click
: 打开光标处的文件、目录名或者网址
用法: open-wsl [选项]...
-a: 激活在运行的 wsl-terminal 窗口。
如果 use_tmux=1,会 attach 到正在运行的 tmux 会话上。
-l: 运行一个 login shell (如果 use_tmux=1 则失效)。
-c "command": 运行 command 中的命令。
-C dir: 进入到 dir 目录中,dir 是 WSL 中的目录。
-d distro: 切换发行版。
-b "options": 传递额外的选项给 wslbridge。
-h: 显示帮助信息。
用法: cmdtool [选项]...
update: 检查更新,如果有更新可以直接升级。
killall: 杀死所有的 WSL 进程。
install cbwin: 安装 cbwin。
另外可以参考 mintty 参数 和 wslbridge 参数。
tools/1-add-open-wsl-terminal-here-menu.js
: 添加 Open wsl-terminal Here
右键菜单到资源管理器上。
tools/1-remove-open-wsl-terminal-here-menu.js
: 移除 Open wsl-terminal Here
右键菜单。
tools/2-add-wsl-terminal-dir-to-path.js
: 将 wsl-terminal
目录添加到 Path
环境变量里。
tools/2-remove-wsl-terminal-dir-from-path.js
: 从 Path
环境变量中移除 wsl-terminal
目录。
tools/3-write-distro-guids-to-config-file.js
: 将所有发行版的 guid 写入到配置文件 etc/wsl-terminal.conf
中.
tools/4-create-start-menu-shortcut.js
: 创建一个开始菜单快捷方式,指向 open-wsl -C ~
。
tools/4-create-start-menu-shortcut-login-shell.js
: 创建一个开始菜单快捷方式, 指向 open-wsl -l
。
tools/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="my 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
文件全部删除,你也可以等那些进程退出后手删除那些文件。
在 WSL 里安装 tmux。
在 etc/wsl-terminal.conf
中设置 use_tmux=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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.