更好地使用 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 即可。
17411 次点击
所在节点    Windows
56 条回复
kindjeff
2016-08-20 15:16:02 +08:00
前面是不是在知乎摘抄的,好像见过。
我在用 cmder 。然而还是有一点不爽的就是没法直接在 ubuntu on windows 上用 IDE 因为装不上桌面环境。发现 gevent 在 windows 上貌似运行的不怎么好,为了在 linux 上用 IDE ,于是最后还是装了个 ubuntu 。
hjc4869
2016-08-20 15:19:23 +08:00
@kindjeff 如果只是运行 IDE 可以尝试使用 VcXsrv/Xming/Cygwin-X ,在 Ubuntu 环境里把$DISPLAY 设置为 127.0.0.1:0
eamars
2016-08-20 15:34:31 +08:00
oh-my-zsh 好像可以正常工作了哦

kindjeff
2016-08-20 15:40:12 +08:00
@hjc4869 是压根不支持桌面环境吧,反正用 VNC 试了一下午都没成功,尝试了各种桌面。
goreliu
2016-08-20 15:44:52 +08:00
@kindjeff 知乎那个也是我写的,省事就没改,这个 wsl-terminal 也是……
goreliu
2016-08-20 15:49:55 +08:00
@kindjeff VcXsrv/Xming 我试过, Xming 不推荐,启动速度比较慢。 VcXsrv 还好,有的软件能运行成功(比如 xterm 、 st 、 gedit ),有的有问题(比如基于 vte3 的各种终端)。基本上如果用 IDE 的话还是 Windows 本地的比较好,不然性能还是有问题,不知道后续各 IDE 会不会考虑支持 WSL 。
goreliu
2016-08-20 15:53:27 +08:00
@eamars 嗯,大概第二个内部预览版 zsh 就正常了,之前我一直在等中文支持,等了几个月等不及了才找各种办法。
ifoolish
2016-08-20 18:47:17 +08:00
在用 cmder ,也挺好用的主要是支持多标签,但是 cmder 里 VIM 的配色很难看,回头试试楼主说的这个
hronro
2016-08-20 19:32:54 +08:00
我现在用 cmder 也用的蛮好的
Tink
2016-08-20 19:39:15 +08:00
这个东西到底是哪个版本能更新上来,我现在 14393.51 没这个东西
xupefei
2016-08-20 20:10:26 +08:00
xy19009188
2016-08-20 20:14:06 +08:00
mark
goreliu
2016-08-20 20:35:00 +08:00
@hronro 这个在 shell 退格删除中文有问题,在 vim 中文宽度不对,只支持 16 种颜色。另外启动速度、资源占用都不如 wsl-terminal 。
goreliu
2016-08-20 20:38:39 +08:00
@hronro 其实只用 WSL 的话, ConEmu 反而比基于它开发的 cmder 好些, ConEmu 内置了 bash.exe 的菜单,启动速度也要快一些。
zaishanfeng
2016-08-20 20:41:56 +08:00
这个东西可以作为开发环境吗
goreliu
2016-08-20 20:50:20 +08:00
@zaishanfeng 要看开发什么,如果使用的工具没遇到 bug 大概是可以的。我遇到的问题列表,里边都是不能正常跑的程序,可以参考一下:

1. script
2. fakeroot
3. socat UNIX-LISTEN:aa -
4. ltrace
5. valgrind
6. chroot
7. dig: 能运行和显示结果,但有错误提示 setsockopt(20, IP_RECVTOS) failed: Invalid argument
8. screen
9. nginx
10. ping
11. tracepath
12. /proc/sys/fs/binfmt_misc
13. 依赖 inotify 的工具
14. fish
xupefei
2016-08-21 05:15:26 +08:00
@goreliu dig, tracepath 和 ping 的问题都可以通过管理员运行 bash.exe 解决。目前这在官方还是个已知 bug 。
goreliu
2016-08-21 08:42:19 +08:00
@xupefei 但用管理员运行还是比较麻烦和危险的。
tan90ds
2016-08-22 06:48:33 +08:00
给楼主提个意见: GitHub 主页上的截图配色实在是太难看了
tan90ds
2016-08-22 06:51:09 +08:00
没打完就发出去了… 楼主可以换一个 colorscheme 重新截图,比如我用的这个 gruvbox 。

ForegroundColour=235,219,178
BackgroundColour=29,32,33
CursorColour=235,219,178
Black=40,40,40
BoldBlack=146,131,116
Red=204,36,29
BoldRed=251,73,62
Green=152,151,26
BoldGreen=184,187,38
Yellow=215,153,33
BoldYellow=250,189,47
Blue=69,133,136
BoldBlue=131,165,152
Magenta=177,98,134
BoldMagenta=211,134,155
Cyan=104,157,106
BoldCyan=142,192,124
White=168,153,132
BoldWhite=235,219,178

这个终端很好用!立刻从小毛病不断的 ConEmu 换过来了。

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

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

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

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

© 2021 V2EX