C6.24.4Visible one-step undo for auto-format设计研究
自动更改应可见且可一步撤销,否则用户会怀疑是否打错了字
别名: 格式化撤销 · 自动大写可见 · 误归因打错
概念解释
自动大写和自动格式化一旦改了缓冲区,必须让人看见“系统刚动过”,并且用一次撤销就能回到刚才亲手敲入的码点。若变化既不标出、撤销又会连同前面几个字母一起删掉,用户会把弯引号、被抬高的 I、莫名出现的破折号归因成自己按错。这条要求针对的是格式与大小写变换的可逆性,不是拼写建议条上的“改回原词”。
机制
人用“我按了什么”校准内部模型。静默改写切断这条校准:视觉上的新字形若近似旧字形,错误归因偏向自身。撤销栈如果把“打出两点 + 替换成破折号”合成一个单元,一步撤销会丢掉用户仍想保留的连字符意图;如果拆得太细,用户要连按多次才能剥掉格式。可见性可以用短暂的底色、插入点旁的小徽章、或键盘上闪一下 Shift。一步撤销应只回滚这次自动变换,并重新露出直引号或小写,而不是清空整句。自动纠错的撤销对象是被换掉的词;这里的对象是被换掉的标点或大小写位,两者若共用一个含糊的“撤销输入”,用户无法预测倒回去的是哪一层。
怎么研究
在有/无高亮、有/无独立撤销单元的编辑器里输入会触发格式化的序列,然后要求“恢复我刚才打的字符”。记录能否一次完成、归因问卷(自己/系统)、以及撤销后缓冲区是否精确等于触发前。眼动可以看变化发生时注视是否在插入点。不要用拼写错误单词做材料。
边界
协同编辑里,别人的自动格式化对你来说不是“一步撤销”能处理的,需要版本或建议模式。输入法组字未上屏的拼音串被改写,撤销语义更乱,应禁止在组字态做智能标点。语音输入的句首大写若来自识别引擎,撤销可能要回退整句识别结果,粒度不同。无障碍用户依赖“改动公告”;只做视觉闪一下对他们等于不可见。
怎么落地
- 自动大写或智能标点触发时,短暂标记被改的字符,并保证撤销键只回滚该次变换。
- 把这次变换在撤销栈里标成独立动作,不要与前后击键合并。
- 屏幕阅读器朗读“已改为弯引号”或“已大写”,而不是沉默。
- 验证:打出
--被换成破折号后按一次撤销,缓冲区应回到两个连字符且前后字母还在;再问“这是你打错的还是软件改的”,目标是答软件。