InputTip Cursor Sync 是一个运行在 Windows 上的 VS Code 扩展,用于根据当前输入状态自动切换编辑器光标颜色。
CN:中文输入状态
EN:英文输入状态
Caps:Caps Lock 已开启
扩展本身不直接读取 IME 状态,而是监听系统临时目录中的一个状态文件,并在状态变化时更新 workbench.colorCustomizations.editorCursor.foreground。
工作原理
- 外部脚本将当前输入状态写入
%TEMP%\inputtip-vscode-state.txt
- 扩展持续监听这个文件
- 当文件内容变成
CN、EN 或 Caps 时,扩展立即更新光标颜色
这种设计把 IME 检测交给更适合处理 Windows 输入法状态的外部工具,VS Code 扩展侧只负责读取状态并应用颜色。
运行要求
- Windows
- VS Code
1.85.0 或更高版本
- 一个持续写入
%TEMP%\inputtip-vscode-state.txt 的后台脚本
安装
- 打开 VS Code
- 打开扩展管理器(
Ctrl + Shift + X),搜索 InputTip Cursor Sync 并安装
配置项
扩展提供以下三个配置项:
inputTipCursorSync.cnColor:输入状态为 CN 时的光标颜色
inputTipCursorSync.enColor:输入状态为 EN 时的光标颜色
inputTipCursorSync.capsColor:输入状态为 Caps 时的光标颜色
默认值如下:
{
"inputTipCursorSync.cnColor": "#ff4d4f",
"inputTipCursorSync.enColor": "#4096ff",
"inputTipCursorSync.capsColor": "#52c41a"
}
如果你正在使用 InputTip 和 AutoHotkey,可以创建一个 plugins/custom-ime-sync.ahk 文件,然后在主插件文件中引入它。
示例:
global __sync_last_state := ""
global __sync_file := A_Temp "\inputtip-vscode-state.txt"
SetTimer(BroadcastImeState, 50)
BroadcastImeState() {
global __sync_last_state, __sync_file
try {
if (GetKeyState("CapsLock", "T")) {
state := "Caps"
} else {
state := isCN() ? "CN" : "EN"
}
if (state = __sync_last_state) {
return
}
__sync_last_state := state
if FileExist(__sync_file) {
FileDelete(__sync_file)
}
FileAppend(state, __sync_file, "UTF-8")
}
}
然后在 InputTip.plugin.ahk 中加入:
#Include custom-ime-sync.ahk
注意事项
- 扩展会更新全局配置
workbench.colorCustomizations
- 如果其他扩展或你自己的设置也在修改
editorCursor.foreground,则以最后一次写入为准
- 如果状态文件不存在,扩展不会报错,只会等待有效状态出现
- 当前只识别
CN、EN 和 Caps
故障排查
光标颜色没有变化
请检查以下几点:
%TEMP%\inputtip-vscode-state.txt 是否存在
- 文件内容是否严格等于
CN、EN 或 Caps
- 外部脚本是否仍在运行
- 扩展是否已在 VS Code 中安装并启用
License
当前仓库还没有包含 LICENSE、LICENSE.md 或 LICENSE.txt。如果你准备公开发布,建议先补齐许可证文件。