问题
《搜狗输入法for Mac输入中文标点(及自定义短语)》详细讲解了配置的过程。
但是搜狗输入法只要一更新,我就要重新手动编辑该 phrases.ini。我试着将这个过程用 shell 实现。
y,2=「
y,3=」
想着用 echo 将上面的字符附加到 phrases.ini 文件末尾就可以了,结果发现出现乱码。因为phrases.ini是二进制文件,查看:
$ enca -L zh_CN phrases.ini
Universal character set 2 bytes; UCS-2; BMP
CRLF line terminators
Byte order reversed in pairs (1,2 -> 2,1)
解决过程
接着考虑用十六进制的格式修改。
改之前,phrases.ini 的结尾:
334 00014d0: 2300 9c51 8653 2400 6c00 7500 6e00 6100 #..Q.S$.l.u.n.a.
335 00014e0: 7200 6400 6100 7400 6500 0d00 0a00 6200 r.d.a.t.e.....b.
336 00014f0: 6100 6e00 6200 6500 6e00 2c00 3200 3d00 a.n.b.e.n.,.2.=.
337 0001500: 2300 2400 5600 4500 5200 5300 4900 4f00 #.$.V.E.R.S.I.O.
338 0001510: 4e00 0d00 0a00 N.....
手动添加上我自定义的字符,结尾成了:
335 00014e0: 7200 6400 6100 7400 6500 0d00 0a00 6200 r.d.a.t.e.....b.
336 00014f0: 6100 6e00 6200 6500 6e00 2c00 3200 3d00 a.n.b.e.n.,.2.=.
337 0001500: 2300 2400 5600 4500 5200 5300 4900 4f00 #.$.V.E.R.S.I.O.
338 0001510: 4e00 0d00 0a00 7900 2c00 3200 3d00 0c30 N.....y.,.2.=..0
339 0001520: 0d00 0a00 7900 2c00 3300 3d00 0d30 0d00 ....y.,.3.=..0..
340 0001530: 0a00 ..
最后,shell 脚本就成了:
#!/bin/bash
echo -e "\x79\x00\x2c\x00\x32\x00\x3d\x00\x0c\x30\x0d\x00\x0a\x00\x79\x00\x2c\x00\x33\x00\x3d\x00\x0d\x30\x0d\x00\x0a\x00" >> "/Library/Input Methods/SogouInput.app/Contents/Resources/phrases.ini"
pkill Sogou
pkill Sogou
遗留问题
我在运行之前是有备份的(phrases.ini_bak),当上面脚本运行成功之后,再运行
enca -L zh_CN phrases.ini
就显示不出来信息了,但不影响输入法使用,暂且这样吧。