如何修改Windows Terminal及控制台应用的光标(caret)显示形状
Windows控制台光标样式修改方案
实现原理
修改控制台光标样式的核心是调整SetConsoleCursorInfoAPI传入的光标高度参数,不同高度对应不同的显示效果:
- 10~25:对应你需要的下划线/竖线样式(旧版CMD渲染为下划线,新版Windows Terminal渲染为竖线)
- 50:半高块样式
- 100:默认全高块样式
C/C++ 可直接复用代码
#include <windows.h> #include <stdio.h> // 光标样式预设 #define CURSOR_STYLE_UNDERLINE_OR_LINE 15 #define CURSOR_STYLE_HALF_BLOCK 50 #define CURSOR_STYLE_FULL_BLOCK 100 void set_cursor_style(int style) { HANDLE output_handle = GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO cursor_config; // 先读取现有配置,避免修改无关参数 GetConsoleCursorInfo(output_handle, &cursor_config); cursor_config.dwSize = style; SetConsoleCursorInfo(output_handle, &cursor_config); } int main() { // 测试修改为下划线/竖线样式 set_cursor_style(CURSOR_STYLE_UNDERLINE_OR_LINE); printf("当前为下划线/竖线样式,按回车切换下一个样式\n"); getchar(); // 改回默认块样式 set_cursor_style(CURSOR_STYLE_FULL_BLOCK); printf("已恢复默认块样式\n"); getchar(); return 0; }
PowerShell 临时修改命令
如果是脚本场景直接执行以下命令即可:(Get-Host).UI.RawUI.CursorSize = 15
注意事项
- 上述方法仅对系统自带的传统CMD、PowerShell和Windows Terminal生效
- 第三方终端模拟器需要在终端自身设置面板中修改光标样式,系统API调用不会覆盖第三方终端的全局配置
内容的提问来源于stack exchange,提问作者elcuco
相关产品推荐
相关产品推荐

