跳转到内容
moshpit

在终端里正常地输入中文

输入法组词的过程中(拼音、假名、韩文都一样),还没上屏的那串字属于键盘,不属于 shell。你按下确认之前,远端主机不该收到任何东西。Moshpit 把正在组的字带下划线画在光标位置。字串变长,终端真正的光标就跟着移到末尾。你看到的位置就是你所在的位置。

  • 拼音看不见。引擎内部一直在记录 marked text,却从没把它画出来。现在它以带下划线的浮层显示在光标处。
  • 光标往回跳。拼音这类输入法每敲一个键都会替换整串 marked text,候选翻页时上报的选区还可能是过期的。按偏移量老实追踪的做法,会抖回到词首。现在光标跟着组词文字的末尾走。
  • 输出把光标抢走。频繁重绘的窗格,比如智能体的状态行、resize、重排,以前会在你打字中途把光标从拼音末尾拽回词首。现在重绘会让位给组词浮层。
  • 删除把整串拼音删光。组词期间按退格,现在只从 marked text 里删一个字符,而不是发真正的退格键把整串炸掉。拼音键盘下长按连删能用,靠的就是这个。
  • 上屏那一下光标弹回去。组词刚结束的瞬间,终端自己的光标还没动。这时候贴着它走,光标就会在你打完一个词的同时往回蹦。现在不再贴了。

中日韩字符占两格。这不只是好看不好看的问题:一个折成两行的 URL,只要前面有全角字符,靠数字符数就接不回来。Moshpit 改读终端模拟器自己的软换行标记,所以把折行的 URL 识别成链接时,不会悄悄截掉一半。

以上都是客户端这边的事。主机上的程序如果自己处理不好全角字符(有些 TUI 确实处理不好),Moshpit 会照收到的样子渲染,错位也照样显示。另外终端字体得有这些字形:内置的等宽字体对拉丁字母覆盖完整,对中日韩字符参差不齐,缺的字由系统字体补上。