0 环境
- Windows11 22H2
- VS 2022 Community
- Windows Terminal 1.18.2822.0
1 问题说明
当使用 VS 写控制台程序时,运行后会弹出 CMD 窗口,并聚焦到该窗口。除了当前程序运行外,最后应该是暂停,等待用户输入任意按键,然后自动退出。如下图:
但是,实际运行时却如下图所示,运行的是 Windows Terminal,并在其中运行 CMD。而且,最主要的问题是,总是需要再用鼠标点击一下窗口,才能聚焦到 CMD,才能接收到按键输入。即使使用 Alt+Tab 切换都不行(这只会让 Terminal 获得焦点,但 CMD 子窗口仍获取不到焦点)。
如上图示,CMD 窗口没有活动的光标,说明窗口没有获得焦点,则不会接受按键输入。
作为一个效率至上者,作为一个喜欢使用 vim/vsvim 这样的纯键盘开发者,这样总需要多余的抬手拿鼠标点击一下,是不可容忍的。
2 问题分析与解决
- 问题分析
自己之前已经美化配置过 Terminal,确实也挺好用,当然不舍得直接删了。于是,只能来解决这个问题。
VS 控制台程序运行时默认是调用 CMD,现在变成了 Terminal,应该是 Terminal的安装使得当前系统所有 Windows 的命令行程序,默认都由 Terminal 调用与运行。
既然确定是由 Terminal 引起的问题,那就先尝试查找一下 Terminal 有没有相关的设置项;如果没有再去看看 Windows 的默认应用有没有相关的设置项。
- 解决方案
Terminal 设置里有这样一个相关项。如下图示:
设置相关项:设置->启动->默认终端应用程序,其默认值为 “让 Windows 决定”。
经过测试,将 “ 让 Windows 决定” 修改成 “Windows 控制台主机” 即可解决 VS 这个问题。