Windows Terminal

Windows Terminal

官方文档:https://docs.microsoft.com/zh-cn/windows/terminal/

Github:https://github.com/microsoft/terminal

终端、控制台、shell的区别

配置文件

配置方式类型vscode,Win Terminal的默认配置文件default.json打开方式:按住alt键点击设置

setting.json中自定义选项时可以参考default.json

对各项设定作用以及取值说明文档 SettingsSchema.md

设定启动目录

default.json 中设置为"startingDirectory": "%USERPROFILE%",如我的设置powershell启动目录为Desktop

image-20210212210958074

设置主题(theme)

主题包括整个窗口的颜色(不包括标题栏)

image-20210212211639068

配置Win Terminal有两种方式

经实际使用,colortool只在cmd或powershell中有效,在Win Terminal打开的ps中运行无效

自动方式:colortool, 属于Terminal repo的一部分,可以在repo下载release安装或者scoop install colortool,我运行整个程序就出错:

image-20210212212531920

查了repo的issue,暂时没找到原因,我的Terminal从win store安装,非预览版,在colortool的文档中没有见到有要求Terminal版本

经实际使用 colortool campbell.ini才是正确方式,即Scheme name要带上文件后缀为了使这项改动永久生效,还需要在powershell的标题栏右键打开属性点击“确定”,cmd的窗口主题也可以这样改变,cmd和ps的改定似乎是分开的,即使ps中已经成功运行了这条命令,这条命令在Windows Terminal中打开的PS里运行并不改变主题,猜想Windows Terminal的setting.json拥有最高优先级。

image-20210213201907913

手动方式:改写setting.json文件,例如配置毛玻璃主题:https://docs.microsoft.com/zh-cn/windows/terminal/custom-terminal-gallery/frosted-glass-theme,要改的两处一处是在sheme中添加主题的各种值,另一处是profile中针对powershell添加选项"colorScheme",`default.json`有各种主题的scheme键值对,默认的主题是Campbell,以上截图是改成了`Solarized Dark`,可以观察到colortool -b Campbell命令中的字符-b不易阅读。

使用oh-my-posh美化Powershell

https://github.com/JanDeDobbeleer/oh-my-posh

oh-my-posh包括了powerline功能,后者可以在命令行提示中显示git状态以及给提示分段,以下乱码是字体不能显示某些符号

image-20210212214544956

参见issue #319,下载任何一个Nerd字体,安装字体后,setting.json中添加”fontFace”: “Delugia Nerd Font”, 这个字体的下载地址参见:https://www.jianshu.com/p/19db2f50cec9

Nerd字体的Repo:https://github.com/ryanoasis/nerd-fonts

以下是美化后的效果截图

image-20210212220023248

1部分:显示加载配置文件耗时

2部分:用vscode在oh-my-posh本地repository下创建了新文件

3部分:git状态提示,+1表示新添加了文件

不能在powershell中修改字体

在windows Terminal setting.json中给PS配置了NERD字体,如果不通过WT直接启动PS,还是不能正确显示,PS也无法更改字体,原因是PS对字体使用有更严格的要求

可以使用这个字体:https://github.com/be5invis/Sarasa-Gothic/releases 在它的介绍里发现有tsinghua mirror,加快下载速度

使用等距更纱黑体 T SC字体可以显示powerline的符号,这个字体也适合cmd,即cmd也能设置这个字体,再配合colortool更改配色

参考https://www.jianshu.com/p/100aa26a42cc

添加git bash到Win Terminal

git bash属于git-for-windows提供的bash环境

每个profile都需要GUID,一个在线生成GUID的网站https://www.guidgen.com/

or You can run [guid]::NewGuid() in PowerShell to generate a GUID for your custom profile.

我的配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
// Make changes here to the git-bash.exe profile.
"guid": "{b113edb3-02a0-431a-a6c9-9c0356a1ad4c}",
"name": "git bash",
"commandline": "C:\\Program Files\\Git\\bin\\bash.exe",
"icon": "C:\\Program Files\\Git\\mingw64\\share\\git\\git-for-windows.ico",
"hidden": false,
"padding": "8, 8, 8, 8",
"altGrAliasing": true,
"startingDirectory": "%USERPROFILE%",
"useAcrylic": true,
"acrylicOpacity": 0.7,
"colorScheme": "Ubuntu"
}

注意 commandline不要填git-bash.exe的路径,否则生成的窗口不会嵌入在Win Terminal里,而是独立成窗口

image-20210213214337473

issue

1部分可以看到有路径没有正确显示,中文乱码

https://github.com/git-for-windows/git/issues/2181T

修改启动时的默认profile

defaultProfile 值填写各个profile的GUID,如要默认启动bash,就填bash的GUID

修改背景图片

“backgroundImage”:”图片的绝对地址”

“backgroundImageOpacity”: 1 // 图片透明图

“backgroundImageStretchMode”: “uniformToFill”

setting.json的”defaults”下的设置对所有profile都有效,Put settings here that you want to apply to all profiles。如果把更改背景图片的设置放在这儿,所有的shell都会被更改背景图片

一个Powershell资源收集REPO

awesome-powershell

reference

https://github.com/atomcorp/themes 此处可以获取各种theme的json文件

TerminalSplash

WSL

image-20210214033950182

更改安装目录

默认安装目录为系统盘,依以下步骤可以迁移到其他目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
首先查看所有分发版本
wsl -l --all -v
  NAME STATE VERSION
 * Ubuntu-20.04 Running 2

导出分发版为tar文件到d盘
wsl --export Ubuntu-20.04 d:\ubuntu20.04.tar
注销当前分发版
wsl --unregister Ubuntu-20.04
重新导入并安装分发版在d:\ubuntu
wsl --import Ubuntu-20.04 d:\ubuntu d:\ubuntu20.04.tar --version 2
设置默认登陆用户为安装时用户名
ubuntu2004 config --default-user Username
删除tar文件(可选)
del d:\ubuntu20.04.tar

运行windows的exe文件

wsl(指子系统的命令行)自动继承了windows的环境变量,输入echo $PATH 可以观察,但是/mnt/c/MinGW/bin下的gcc为exe文件,需要输入gcc.exe才能在wsl里运行

打开资源管理器

运行explorer.exe .可以打开当前目录,可以在.bahsrc里建立同名:alias explore=explorer.exe

在windows和wsl上都安装有python

Remember, Python is installed in the Linux distro, which means if you’re editing Python files on the Windows side, you can’t run or debug them unless you install the same Python development stack on Windows. And that defeats the purpose of having an isolated Linux instance set up with all your Python tools and runtimes!

vscode+wsl

vscode装在windows侧,配有插件wsl-remote,第一次在wsl中使用命令code会自动安装a small vscode server

https://code.visualstudio.com/docs/remote/wsl

wsl在vscode中的issue

https://code.visualstudio.com/docs/remote/wsl#_known-limitations

Working with Git#

wsl和vsc以及git一起工作,有两个问题,一是换行,二是凭证

Using C++ and WSL in VS Code

https://code.visualstudio.com/docs/cpp/config-wsl GCC

ZSH

安装zsh并设置为默认的shell

echo $SHELL 查看默认的shell

https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH

Fish

相比zsh,开箱就用,运行fish_config还可以开启浏览器端的配置

输入help keyword,可以访问在线的fish帮助

安装oh-my-fish,如果要安装插件也可以在这个仓库找到

fish的awesome repo:https://github.com/jorgebucaran/awsm.fish,收集了fish的许多资源

fish不兼容bash,如果要运行bash脚本怎么办呢?

目录跳转插件

oh-my-fish/plugin-z

wting/autojump

rupa/z

skywind3000/z.lua

速查表

bash:

https://github.com/LeCoupa/awesome-cheatsheets/blob/master/languages/bash.sh

error-starting-the-fish-config-web-ui-in-wsl

在我wsl上输入fish_config,不能访问web config网页,错误如视频所示:

https://github.com/huangchaof/huangchaof.github.io/blob/master/fish_configerror.mp4

或者链接:https://pan.baidu.com/s/1fSvi-uLUnEXHHyIc6vXRyg
提取码:s1w3

解决方式:https://unix.stackexchange.com/questions/597118/error-starting-the-fish-config-web-ui-in-wsl

这个web页是通过web server实现的,源文件在/usr/share/fish/tools/web_config/webconfig.py

Notepad2

原始的已经停止更新,现在有一个github分支https://github.com/zufuliu/notepad2

mcedit

shortcut说明

c-u 表示ctrl-U

m-e 表示alt-e

s-i表示shift-insert