更好地使用 Windows Subsystem for Linux (或者叫 Bash on Ubuntu on Windows)终端环境

2016-08-20 14:31:53 +08:00
 goreliu

Windows 10 中包含了一个 WSL ( Windows Subsystem for Linux )子系统,我们可以在其中运行未经修改过的原生 Linux ELF 可执行文件。利用它我们可以做很多事情,对开发人员和普通用户都是如此。当然对开发人员的吸引力更大一些,因为这意味着在一些情况,不再需要使用 Linux 虚拟机、双系统、 Cygwin/MSYS2 了。

当前版本( 14901.1000 ) Windows 10 中的 WSL 功能已经比较完善了,和刚出来时不可同日而语,也不再是一个没有实用价值的玩具了(最初的版本连 zsh 和 tmux 等最基本的工具都无法运行,基本没有可用性。但如果现在依然说 WSL 不可用,就有失偏颇了)。但对不想折腾的普通用户来说,用户体验并不好。比如中文显示有问题,不支持中文输入,只支持 16 种颜色,不能隐藏滚动条,不兼容某些命令的输出,不能定制主题和一些其他按键相关配置等。

用过 Cygwin/MSYS2 的朋友都清楚有个名叫 mintty 的终端模拟器,体积小巧配置简单,功能也够用,如果能直接用 mintty 作为 WSL 的终端模拟器,用户体验就好很多了。wsl-terminal 让这成为可能。

wsl-terminal 支持如下功能:

  1. 优秀的兼容性(中文显示/输入、 24 位颜色、命令输出等都正常了)。
  2. 体积小巧,压缩包仅 1.7 M 多,解压后不到 10 M 。
  3. 配置简单, mintty 可以直接在标题栏右键配置, wsl-terminal 的配置文件也很简单。
  4. 可以直接在资源管理器右键打开终端模拟器并定位到当前目录。
  5. 可以将 .sh/.py/.pl 脚本关联到用 wsl-terminal 运行。
  6. 可以将文本文件关联到用 wsl-terminal 里的 vim 运行。
  7. 支持 tmux ,可以在 tmux 里打开新目录,恢复已有的 tmux 会话等。
  8. 支持在 WSL 里直接运行 Windows 程序。

使用方法:

  1. https://github.com/goreliu/wsl-terminal/releases 下载 7z 格式的发布包。
  2. 解压后,直接运行 open-wsl.exe 即可在当前目录打开(可以关联到快捷键)。
  3. 可以运行 tools/add-open-wsl-here-menu.js 在资源管理器右键菜单里添加一个 Open WSL Here 菜单(tools/remove-open-wsl-here-menu.js 删除菜单)。
  4. 可以修改 .sh/.py/.pl/.php 等各种脚本的打开方式为 run-wsl-file.exe ,双击就可以打开。如果需要看结果的话,记得脚本最后加个 sleep 或者 read 。
  5. 可以修改文本文件的打开方式为 vim.exe ,双击就可以用 WSL 里的 vim 打开编辑。
  6. 如果想做 WSL 里边运行 Windows 的软件,运行 outbash-daemon.js ,然后把 bin 里的 wrun 、wstart 、wcmd 复制到 /usr/local/bin (可以直接运行 install_cbwin.sh ),然后 wstart notepad 就可以打开记事本了。cbwin 使用文档: https://github.com/xilun/cbwin
  7. 如果需要使用 tmux,在编辑文件里启用 use_tmux 即可。
17720 次点击
所在节点    Windows
56 条回复
goreliu
2016-08-22 07:13:16 +08:00
@tan90ds 审美这个好像因人而异,现在预置了 40 多个主题,你看 https://github.com/goreliu/wsl-terminal/wiki/Screenshots 里边有没有比较好看的。
tan90ds
2016-08-22 07:56:17 +08:00
@goreliu 但是你看 cmder 和 ConEmu 的主页的截图,人家都不会用类似 #FF0000 这样的颜色… 在大家都习惯了类似 solarized 这样的配色的年代,还是要注意一下宣传效果的哈 ;)
goreliu
2016-08-22 08:07:58 +08:00
@tan90ds 如果作为编辑器的话, solarized 这样的配色不错,但作为终端模拟器的话,得照顾其他命令的输出。默认的 16 种颜色都是有名称的, black 就是黑色, green 就是绿色,改成这样的话,颜色全部不对了。如果只在 vim 里用可以只改 vim 的主题。而且 Linux 用户对终端颜色的审美真的和 Windows 用户不一样。
ifoolish
2016-08-22 14:50:02 +08:00
楼主,这个如何设置将 zsh 作为默认 shell ?
goreliu
2016-08-22 15:39:40 +08:00
@ifoolish 编辑 etc/wsl-terminal.conf ,把 shell 改成 zsh 。
ifoolish
2016-08-22 17:54:16 +08:00
@goreliu 发现 zsh 的箭头→显示不正常
goreliu
2016-08-22 18:10:40 +08:00
@ifoolish 这个是怎么配置的,用的是哪个符号,哪个字体。
goreliu
2016-08-22 18:14:46 +08:00
@ifoolish 换个字体呢,我试 Consolas 和 DejaVu Sans Mono 都是正常的,我自己用的 Inziu Iosevka Sc 也正常。
ifoolish
2016-08-22 21:57:00 +08:00
@goreliu 应该不是字体问题,换其他字体还是如此
ifoolish
2016-08-22 21:58:46 +08:00
@goreliu 对了,我是 zsh 加上 Oh-my-zsh 的配置
goreliu
2016-08-22 22:21:42 +08:00
@ifoolish ➜这个符号确实显示不全,→是正常的。
goreliu
2016-08-22 22:29:57 +08:00
@goreliu 还有一些其他的符号也显示不正常,感觉是字体或者编码相关的问题,这种符号在等宽字体下,宽度既不是一个字母的宽度,也不是两个字母的宽度,即使终端模拟器特别处理下能显示全,也是对不齐的,会有其他问题。
goreliu
2016-08-22 22:36:57 +08:00
@ifoolish 还是字体的问题,如果字体里的这个符号不是一个字符宽度的,会被截断成一个字符。 DejaVu Sans Mono 字体能显示正常。如果在这种情况强行显示,会导致等宽字体也对不齐,所以截断了。
ifoolish
2016-08-22 22:43:00 +08:00
@goreliu 但是在 msys2 和 babun 带的 mintty 中都能正常显示的呢
goreliu
2016-08-22 23:04:11 +08:00
@ifoolish 我这里试和 msys2 自带的 mintty 行为是一样的。看下是不是字体设置的不一样。
ifoolish
2016-08-22 23:29:03 +08:00
@goreliu 可能我没说清楚,其实我是指在 msys2 里那个箭头显示没问题,不是指用 msys2 自带的那个 mintty 配上 WSL 没问题
goreliu
2016-08-22 23:47:40 +08:00
@ifoolish 我指的也是在 msys2 的环境里,新安装的以及安装后把 msys2 升级到最新版都是一样的。要不你发下你字体我试下。
ifoolish
2016-08-23 10:05:49 +08:00
@goreliu 用的就是默认的 Consolas 字体,我在两台电脑装了 msys2 和 wsl-terminal ,都是 msys2 显示没问题 wsl-terminal 就不行
goreliu
2016-08-23 10:31:30 +08:00
@ifoolish 我这里是一样的,上边的是 msys2 的,新下载的,只把 mintty 更新到最新的 2.4.0 ,然后字体改成 Consolas 14 。下边的是 wsl-terminal ,字体也是 Consolas 14 。

![]( )
ifoolish
2016-08-23 14:37:46 +08:00
@goreliu 看来是 mintty 新版本的问题,原来我的 msys2 的 mintty 是 2.3.x 版本, babun 的也是,显示箭头是没问题的,你这么一说我就用 pacman 更新 mintty 到了 2.4.0 ,果然显示不全了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/300618

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX