使用 wsl-terminal 更好地体验 Win 10 WSL 终端环境

WSL 从最初功能不全 bug 遍地都是,到现在除了少数几个比较顽固的 bug 外,基本足以正常使用了。但自带终端模拟器的体验依然非常糟糕,而且在可以预期的未来都不会有太大的长进了。我是从去年 8 月开始开发 wsl-terminal中文页面)的,期间因为想不到可以添加什么功能而搁置了比较长时间。最近心血来潮,添加了很多实用功能,用户体验也会上升很多。

希望有在使用的朋友可以多反馈下意见建议,如果之前没有尝试过,也可以体验一下,软件是一个 1.6 MB 的压缩包,解压后即可使用,不会往系统中写入任何东西(如果想添加到开始菜单或者右键菜单,可以使用 tools 中的工具)。

介绍

用于 Windows Subsystem for Linux (WSL) 的终端模拟器,基于 minttywslbridge

截图

screenshot

查看更多截图

用法

  1. 这里下载最新版本并解压,或者在 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"

  2. 运行 open-wsl.exe 可以在当前目录打开一个 WSL 终端模拟器(wsl-terminal 需要放置在本地的 NTFS 分区上,原因)。

  3. 运行 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

  4. run-wsl-file.exe 可以在 wsl-terminal 里运行任何 .sh (以及任何其他的可执行文件,比如 .py .pl 文件) 脚本文件,你可以在文件打开方式里设置使用它来打开文件。

  5. 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 绑定到快捷键

命令行参数

open-wsl

用法: 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 参数

cmdtool(在 WSL 中运行)

用法: 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 目录下的工具:

文件名 功能
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

该工具依赖 wget7z 命令(安装方法。Ubuntu: apt install wget p7zip-full, Archlinux: pacman -S wget p7zip)。

升级过程不会覆盖配置文件,etc/wsl-terminal.confetc/minttyrc 会被放置到 etc/wsl-terminal.conf.pacnewetc/minttyrc.pacnew。升级后 bin 目录会残余一些 .bak 文件,因为这些文件还在运行,不能被删除。下一次升级时,会将之前的 .bak 文件全部删除,你也可以等那些进程退出后手删除那些文件。

使用 tmux

  1. 在 WSL 里安装 tmux。

  2. etc/wsl-terminal.conf 中设置 use_tmux=1。如果版本号低于 0.8.1,还需要添加 attach_tmux_locally=1

  3. 添加如下代码到 ~/.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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260

推荐阅读更多精彩内容