Windows 终端中的故障排除

本指南解决了使用 Windows 终端时可能会遇到的一些常见错误和障碍。

打开设置项不执行任何操作(或打开意想不到的应用程序)

如果在下拉列表中选择 “设置” 按钮,终端会尝试打开设置文件 settings.json。 此操作会导致操作系统启动您已配置的 .json 文件编辑器。 此编辑器可能是 Visual Studio、记事本或某个其他出人意料的应用程序。 如果计算机没有配置的 .json 编辑器,OS 最终会显示 “如何打开此文件 ”对话框。

小窍门

还可以使用用户界面 (UI) 配置首选项。 您可以了解如何在 “操作”页上打开设置界面。

在较旧版本的 Windows 终端中启动时,将 WSL 分发设置为在主 ~ 目录中启动

默认情况下,配置文件的startingDirectory%USERPROFILE%C:\Users\<YourUsername>)。 此路径是 Windows 路径。 对于运行新版本 Windows 终端的 WSL 分发版,文件系统可以输入 ~ 以设置此主路径。 在较旧版本的 Windows 终端中,可用于 /home/<Your Ubuntu Username> 直接引用主文件夹。 例如,以下设置在其主文件路径中启动“Ubuntu-20.04”分发版:

{
    "name": "Ubuntu-20.04",
    "commandline" : "wsl -d Ubuntu-20.04",
    "startingDirectory" : "/home/<Your Ubuntu Username>"
}

如果你使用的是 Windows 终端的早期版本,当你在设置中引用发行版的主目录路径\\wsl$\时,WSL 可能需要使用startingDirectory前缀。 例如,以下设置在其主文件路径中启动“Ubuntu-18.04”分发版:

{
    "name": "Ubuntu-18.04",
    "commandline" : "wsl -d Ubuntu-18.04",
    "startingDirectory" : "//wsl$/Ubuntu-18.04/home/<Your Ubuntu Username>"
}

重要

在较新版本的 Windows 上, startingDirectory 可以接受 Linux 样式的路径。

设置选项卡标题

若要让 shell 自动设置选项卡标题, 请访问设置选项卡标题教程。 如果要设置自己的选项卡标题,请打开 settings.json 文件 ,然后按照以下步骤作:

  1. 在您选择的命令行的配置文件中,添加 "suppressApplicationTitle": true 以抑制 shell 发送的任何标题更改事件。 向配置文件添加此设置会将选项卡标题设置为配置文件的名称。

  2. 如果想要一个不是个人资料名称的自定义选项卡标题,请添加 "tabTitle": "TITLE"。 将“TITLE”替换为首选选项卡标题。

PowerShell 中的命令行参数

若要了解命令行参数在 PowerShell 中的工作原理,请参阅 “命令行参数”页

WSL 中的命令行参数

若要了解如何在 WSL 中使用命令行参数,请参阅 “命令行参数”页

问题定义 startingDirectory

如果配置文件忽略该 startingDirectory 设置,请先检查 settings.json 文件中的语法。 为了帮助你检查此语法, "$schema": "https://aka.ms/terminal-profiles-schema" 会自动注入。 某些应用程序(如 Visual Studio Code)使用该注入的架构在进行编辑时验证 JSON 文件。

如果设置正确,则您可能正在运行一个启动脚本,该脚本可以独立设置终端的起始目录。 例如,PowerShell 有其独特的配置文件概念。 如果在 PowerShell 配置文件中更改起始目录,则它优先于 Windows 终端中定义的设置。

或者,如果使用配置文件设置运行脚本 commandline ,则可以在该脚本中设置位置。 与 PowerShell 配置文件类似,脚本中的命令优先于 startingDirectory 配置文件设置。

目的是 startingDirectory 在给定目录中启动新的 Windows 终端实例。 如果终端运行任何更改其目录的代码,请检查该代码。

Ctrl+= 不会增加字号

如果使用德语键盘布局,可能会遇到此问题。 如果主键盘布局设置为德语,Ctrl+= 将反序列化为 Ctrl+Shift+0。 对于德语键盘,此映射是正确的。

更重要的是,应用永远不会收到 Ctrl+Shift+0 击键。 出现此问题的原因是,如果有多个键盘布局处于活动状态,Windows 会保留 Ctrl+Shift+0

如果要禁用此功能以便Ctrl+=正常工作,请参考此博客文章,按照“将热键更改为在 Windows 10 中切换键盘布局的说明”进行操作。

将“切换键盘布局”选项更改为“未分配”(或 Ctrl+Shift 关闭),然后选择“ 确定 ”,然后选择 “应用”。 Ctrl+Shift+0 现在用作键绑定,并传递至终端。

另一方面,如果将此热键功能用于多个输入语言,则可以在 settings.json 文件中配置自己的自定义密钥绑定

文本模糊

某些显示驱动程序和硬件组合不能正确处理滚动和需要更新的区域,这会导致上一帧中的数据模糊。 若要缓解此问题,请添加 这些全局呈现设置 的组合,以减少终端文本呈现器造成的硬件上放置的压力。

我的颜色看起来很奇怪! 屏幕上有黑条!

重要

此问题仅适用于 Windows 终端版本 1.2+ 。 若在 Windows 终端 1.0 或 1.1 中看到颜色问题,或其他未在此捕获的问题,请提交错误报告。

Windows 终端 1.2 及更高版本改进了对某些应用程序颜色设置的理解。 由于这种理解得到了改进,我们删除了许多导致用户体验不佳的兼容性块。 遗憾的是,少数应用程序可能会遇到问题。

我们持续更新此故障排除项,其中包含已知问题列表及其解决方法。

PowerShell 中的黑色线条(5.1、6.x、7.0)

终端与 PowerShell 的行编辑库 PSReadline 结合使用时,可能会在屏幕上绘制黑线。 这些颜色错误的区域会延伸到屏幕上,在提示符以外的任何包含命令参数、字符串或运算符的地方。

PSReadline 版本 2.0.3 包含此问题的修补程序。 如果您使用的是 PSReadline 的预发行版本,请注意,目前尚无可用的修补程序。

若要更新到最新版本的 PSReadline,请运行以下命令:

Update-Module PSReadline

为什么我的表情符号不显示为跳转列表中的图标?

只有从文件位置链接的图像才能在跳转列表中呈现为个人资料图标。 跳转列表的图标不支持表情符号。

技术说明

使用 GetConsoleScreenBufferInfo API 系列 以 Win32 格式检索活动控制台颜色的应用程序,然后尝试将它们转换为跨平台 VT 序列(例如,转换 BACKGROUND_RED\x1b[41m)可能会干扰终端检测应用程序尝试使用的背景色的能力。

选择 Windows API 函数 VT 序列以调整颜色。 不要混合它们。

键盘服务警告

从 Windows 终端 1.5 开始,如果禁用“触摸键盘和手写面板服务”,终端会显示警告。 作系统需要此服务才能将输入事件正确路由到终端应用程序(以及 Windows 上的许多其他应用程序)。 如果看到此警告,请按照以下步骤重新启用该服务:

  1. 在运行对话框中,运行 services.msc

    在运行对话框中输入

  2. 查找“触摸键盘和手写面板服务”

    Services.msc 中的触摸键盘和手写面板服务

  3. 打开此服务的“属性”

    服务属性

  4. 将“启动类型”更改为“自动”

    服务启动类型

  5. 选择“ 确定”,然后重启电脑。

重启计算机后,服务会自动启动,并且对话框不再出现。

为什么在使用 Git Bash 命令行时看到闪烁或闪动?

在 Windows 终端中使用 Git Bash 命令行时,你可能会注意到闪烁现象。 此行为实际上是设计造成的。 终端会执行由 Git Bash 命令设置的操作(将bell-style更改为visible,使闪光与铃声响应关联),但这种行为可能会分散注意力。 若要解决此问题,请使用文本编辑器打开 .inputrc Git Bash 的文件。 此文件可能位于路径 C:\Program Files\Git\etc中。 若要使用 Nano 文本编辑器打开文件,请使用以下命令: nano ~/.inputrc

更改默认值:

# none, visible or audible
set bell-style visible

bell-style设置为noneaudible,以去除可见闪光。

set bell-style none

按 Ctrl + O 和 Ctrl + X 保存并退出。

如何在 Windows 终端中将我的设置重置回默认设置?

若要将设置重置回原始默认设置,请删除 settings.json 文件。 此操作会导致 Windows 终端重新生成一个包含原始默认设置的 settings.json 文件。

重要

从 Windows 终端 1.10 版本或更高版本开始,还需要删除与 state.json 文件位于同一目录下的 settings.json 文件,以将设置完全重置为默认值。

为什么亚克力效果的透明度设置没有使 Windows 终端背景透明?

可以使用属性设置终端窗口useAcrylic的透明度。 不透明度设置可能不适用于亚克力的原因有以下几个原因,包括:

  • 作为系统范围的策略,只能为前台窗口启用亚克力。 如果激活终端以外的任何其他窗口,终端的亚克力将关闭。
  • 如果 GPU 硬件不支持亚克力,则亚克力不起作用。 如果在虚拟机(VM)或远程桌面上运行应用,亚克力可能不起作用。
  • 操作系统出于多种原因禁用亚克力,例如系统处于省电模式(低电量)或使用远程桌面访问计算机时。

为什么当我将鼠标指针悬停在窗口上并开始键入时会消失?

此游标自动隐藏行为是设计造成的,但你可以禁用它。 在 Windows 设置中搜索 鼠标设置>其他鼠标设置>鼠标属性>指针选项> ,并在 键入时取消选中“隐藏指针”。 可能需要重启 Windows 终端才能使此更改生效。