其他

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

2017-10-17 作者:陌辞寒 Linux中国
我是从去年 8 月开始开发 wsl-terminal(中文页面)的,期间因为想不到可以添加什么功能而搁置了比较长时间。最近心血来潮,添加了很多实用功能,用户体验也会上升很多。
-- 陌辞寒


本文导航
转载自 | http://www.jianshu.com/p/df58be89b1fe
 作者 | 陌辞寒

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

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

介绍

用于 Windows Subsystem for Linux (WSL) 的终端模拟器,基于 mintty[3] 和 wslbridge[4]

截图

查看更多截图[5]

用法

这里[6]下载最新版本并解压。

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

运行 tools/1-add-open-wsl-terminal-here-menu.js (帮助[8]) 来添加一个 Open wsl-terminal Here 右键菜单到资源管理器上 (运行 tools/1-remove-open-wsl-terminal-here-menu.js 可以将其删除)。 如果你使用 Total Commander, 可以参考 在 Total Commander 中使用 wsl-terminal[9] 。

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

vim.exe 可以使用 WSL 中的 vim 打开任何文件 (在 wsl-terminal 中),支持在打开方式中配置。如果你使用其他编辑器,可以把 vim.exe 重命名成 emacs.exenvim.exe nano.exe 等等,会调用对应的编辑器打开。

快捷键

◈ Alt + Enter: 全屏◈ Alt + F2: 新建窗口◈ Alt + F3: 搜索文本◈ Ctrl + [Shift] + Tab: 切换窗口◈ Ctrl + =+/-/0: 缩放◈ Ctrl + Click: 打开光标处的文件、目录名或者网址

命令行参数

open-wsl

  1. 用法: open-wsl [选项]...

  2.  -a: 激活在运行的 wsl-terminal 窗口。

  3.      如果 use_tmux=1,会 attach 到正在运行的 tmux 会话上。

  4.  -l: 运行一个 login shell(如果 use_tmux=1 则失效)。

  5.  -c "command": 运行 command 中的命令。

  6.  -C dir: 进入到 dir 目录中,WSL 目录(例如 /home/username)。

  7.  -W dir: 进入到 dir 目录中,Windows 目录(例如 c:\Users\username)。

  8.  -d distro: 切换发行版。

  9.  -b "options": 传递额外的选项给 wslbridge

  10.  -B "options": 传递额外的选项给 mintty

  11.  -h: 显示帮助信息。

-B 和 -b 后可以添加的选项,请参考 mintty 参数[10] 和 wslbridge 参数[11]

cmdtool(在 WSL 中运行)

  1. 用法: cmdtool [选项]...

  2.  wcmd: 使用 cmd.exe /c 运行 Windows 程序。

  3.  wstart: 使用 cmd.exe /c start 运行 Windows 程序。

  4.  update: 检查更新,如果有更新可以直接升级。

  5.  killall: 杀死所有的 WSL 进程。

  6.  install cbwin: 安装 cbwin

  7.  install dash: 安装 Cygwin 中的 dash(用于调试)。

  8.  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 的配置文件:

  1. [config]

  2. title="窗口标题"

  3. shell=bash

  4. use_tmux=0

  5. ;icon=

  6. ;distro_guid=

etc/themes/ 目录下的是主题文件,使用主题[12]

etc/minttyrc 是 mintty 的配置文件, mintty 帮助[13]

升级

在 wsl-terminal 里打开 open-wsl.exe,然后运行 ./cmdtool update 可以检查 wsl-terminal 的最新版本然后升级。如果下载速度过慢,可以先使用其他方法从发布页面[6]下载 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 文件全部删除,你也可以等那些进程退出后手删除那些文件。

使用 tmux

在 WSL 里安装 tmux。

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

添加如下代码到 ~/.bashrc(如果配置的是 shell=bash)或者 ~/.zshrc(如果配置的是 shell=zsh):

  1. [[ -z "$TMUX" && -n "$USE_TMUX" ]] && {

  2.    [[ -n "$ATTACH_ONLY" ]] && {

  3.        tmux a 2>/dev/null || {

  4.            cd && exec tmux

  5.        }

  6.        exit

  7.    }

  8.    tmux new-window -c "$PWD" 2>/dev/null && exec tmux a

  9.    exec tmux

  10. }

然后 open-wsl 就会使用 tmux 了。

切换发行版

使用 open-wsl -d distro (在 cmd.exe 里运行)来切换发行版:

  1. # 列出所有发行版

  2. > wslconfig /l

  3. Legacy (默认)

  4. Ubuntu

  5. # 使用 Ubuntu(会运行 wslconfig /s Ubuntu 然后打开 wsl-terminal

  6. > open-wsl -d Ubuntu

  7. # Ubuntu 已经是默认的发行版了

  8. > wslconfig /l

  9. Ubuntu (默认)

  10. Legacy

如果你不想修改默认的发行版,可以在 etc/wsl-terminal.conf 里设置 distro_guid

运行 tools/3-write-distro-guids-to-config-file.js帮助[8]),然后会有窗口弹出结果:

  1. result has been written to ..\etc\wsl-terminal.conf:

  2. ; Legacy

  3. ;distro_guid={12345678-1234-5678-0123-456789abcdef}

  4. ; Ubuntu

  5. ;distro_guid={47a89313-4300-4678-96ae-e53c41a79e03}

  6. remove the ; before distro_guid to use the distro.

可以去掉 distro_guid 前边的 ; 来使用对应的发行版。

如果你想通过命令行将 distro_guid 传递给 open-wsl

  1. # distro guid 传递给 wslbridge

  2. > open-wsl -b "--distro-guid {47a89313-4300-4678-96ae-e53c41a79e03}"

链接

◈ 常见问题[14]◈ 开发计划[15]

编译

确保已经在 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

推荐文章

< 左右滑动查看相关文章 >

点击图片、输入文章 ID 或识别二维码直达



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存