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 支持如下功能:
使用方法:
tools/add-open-wsl-here-menu.js
在资源管理器右键菜单里添加一个 Open WSL Here
菜单(tools/remove-open-wsl-here-menu.js
删除菜单)。 1
kindjeff 2016-08-20 15:16:02 +08:00
前面是不是在知乎摘抄的,好像见过。
我在用 cmder 。然而还是有一点不爽的就是没法直接在 ubuntu on windows 上用 IDE 因为装不上桌面环境。发现 gevent 在 windows 上貌似运行的不怎么好,为了在 linux 上用 IDE ,于是最后还是装了个 ubuntu 。 |
2
hjc4869 2016-08-20 15:19:23 +08:00
@kindjeff 如果只是运行 IDE 可以尝试使用 VcXsrv/Xming/Cygwin-X ,在 Ubuntu 环境里把$DISPLAY 设置为 127.0.0.1:0
|
3
eamars 2016-08-20 15:34:31 +08:00
|
6
goreliu OP @kindjeff VcXsrv/Xming 我试过, Xming 不推荐,启动速度比较慢。 VcXsrv 还好,有的软件能运行成功(比如 xterm 、 st 、 gedit ),有的有问题(比如基于 vte3 的各种终端)。基本上如果用 IDE 的话还是 Windows 本地的比较好,不然性能还是有问题,不知道后续各 IDE 会不会考虑支持 WSL 。
|
8
ifoolish 2016-08-20 18:47:17 +08:00 via iPhone
在用 cmder ,也挺好用的主要是支持多标签,但是 cmder 里 VIM 的配色很难看,回头试试楼主说的这个
|
9
hronro 2016-08-20 19:32:54 +08:00
我现在用 cmder 也用的蛮好的
|
10
Tink 2016-08-20 19:39:15 +08:00
这个东西到底是哪个版本能更新上来,我现在 14393.51 没这个东西
|
11
xupefei 2016-08-20 20:10:26 +08:00
|
12
xy19009188 2016-08-20 20:14:06 +08:00 via Android
mark
|
13
goreliu OP @hronro 这个在 shell 退格删除中文有问题,在 vim 中文宽度不对,只支持 16 种颜色。另外启动速度、资源占用都不如 wsl-terminal 。
|
14
goreliu OP @hronro 其实只用 WSL 的话, ConEmu 反而比基于它开发的 cmder 好些, ConEmu 内置了 bash.exe 的菜单,启动速度也要快一些。
|
15
zaishanfeng 2016-08-20 20:41:56 +08:00 via Android
这个东西可以作为开发环境吗
|
16
goreliu OP @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 |
17
xupefei 2016-08-21 05:15:26 +08:00
@goreliu dig, tracepath 和 ping 的问题都可以通过管理员运行 bash.exe 解决。目前这在官方还是个已知 bug 。
|
19
tan90ds 2016-08-22 06:48:33 +08:00
给楼主提个意见: GitHub 主页上的截图配色实在是太难看了
|
20
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 换过来了。 |
21
goreliu OP @tan90ds 审美这个好像因人而异,现在预置了 40 多个主题,你看 https://github.com/goreliu/wsl-terminal/wiki/Screenshots 里边有没有比较好看的。
|
22
tan90ds 2016-08-22 07:56:17 +08:00
@goreliu 但是你看 cmder 和 ConEmu 的主页的截图,人家都不会用类似 #FF0000 这样的颜色… 在大家都习惯了类似 solarized 这样的配色的年代,还是要注意一下宣传效果的哈 ;)
|
23
goreliu OP @tan90ds 如果作为编辑器的话, solarized 这样的配色不错,但作为终端模拟器的话,得照顾其他命令的输出。默认的 16 种颜色都是有名称的, black 就是黑色, green 就是绿色,改成这样的话,颜色全部不对了。如果只在 vim 里用可以只改 vim 的主题。而且 Linux 用户对终端颜色的审美真的和 Windows 用户不一样。
|
24
ifoolish 2016-08-22 14:50:02 +08:00
楼主,这个如何设置将 zsh 作为默认 shell ?
|
28
goreliu OP @ifoolish 换个字体呢,我试 Consolas 和 DejaVu Sans Mono 都是正常的,我自己用的 Inziu Iosevka Sc 也正常。
|
32
goreliu OP @goreliu 还有一些其他的符号也显示不正常,感觉是字体或者编码相关的问题,这种符号在等宽字体下,宽度既不是一个字母的宽度,也不是两个字母的宽度,即使终端模拟器特别处理下能显示全,也是对不齐的,会有其他问题。
|
33
goreliu OP @ifoolish 还是字体的问题,如果字体里的这个符号不是一个字符宽度的,会被截断成一个字符。 DejaVu Sans Mono 字体能显示正常。如果在这种情况强行显示,会导致等宽字体也对不齐,所以截断了。
|
36
ifoolish 2016-08-22 23:29:03 +08:00
@goreliu 可能我没说清楚,其实我是指在 msys2 里那个箭头显示没问题,不是指用 msys2 自带的那个 mintty 配上 WSL 没问题
|
37
goreliu OP @ifoolish 我指的也是在 msys2 的环境里,新安装的以及安装后把 msys2 升级到最新版都是一样的。要不你发下你字体我试下。
|
38
ifoolish 2016-08-23 10:05:49 +08:00
@goreliu 用的就是默认的 Consolas 字体,我在两台电脑装了 msys2 和 wsl-terminal ,都是 msys2 显示没问题 wsl-terminal 就不行
|
39
goreliu OP @ifoolish 我这里是一样的,上边的是 msys2 的,新下载的,只把 mintty 更新到最新的 2.4.0 ,然后字体改成 Consolas 14 。下边的是 wsl-terminal ,字体也是 Consolas 14 。
![]( ) |
40
ifoolish 2016-08-23 14:37:46 +08:00
@goreliu 看来是 mintty 新版本的问题,原来我的 msys2 的 mintty 是 2.3.x 版本, babun 的也是,显示箭头是没问题的,你这么一说我就用 pacman 更新 mintty 到了 2.4.0 ,果然显示不全了
|
41
goreliu OP @ifoolish 我试过老版本,显示效果是不一样,但也存在问题。主要原因还是字体里这个符号宽度不对,显示全了就会错位,或者整体向后移动,都挺别扭的。不如改下字体里的这个符号(也可能是字体里没有, fallback 到其他字体导致的),或者换个符号。
|
42
hronro 2016-08-25 23:23:00 +08:00
试用了一下,貌似我这边显示中文还是有问题
|
44
hronro 2016-08-27 15:51:27 +08:00
字体是 Courier New ,你所谓的默认字体是指?
反正我用 Consolas 也是一样的效果 |
48
crytis 2016-12-02 15:16:53 +08:00
楼主还在一直更新呐 好顶赞。
ps windows 下的各种终端是不是都没法达到 on my zsh 主题截图的效果,比如 ys ,只有 mac 下可以? |
49
blueboyggh 2017-04-11 09:58:20 +08:00
这个能不能默认打开的时候直接定位到 WSL 的用户文件夹下?就是直接 bash ~
|
52
iamfredng 2017-08-02 05:12:36 +08:00
@mortence @Shawnone 这个是因为 wslbridge.exe 和 wslbridge-backend 两个文件的版本是旧的 0.2.2,可以去 https://github.com/rprichard/wslbridge/releases/tag/0.2.3 这里下载 0.2.3 来代替 bin 目录下的同名文件。我用的 cygwin64 版本的压缩包
|
54
goreliu OP 最近几天更新了很多功能:
https://www.v2ex.com/t/391405 |
55
runapp 2017-09-19 22:48:19 +08:00
能够操作 raw_socket 本身就是很危险的行为,linux 下 traceroute 是需要 root 权限的。ping 倒是不需要……
|