hallelujahIM icon indicating copy to clipboard operation
hallelujahIM copied to clipboard

建议新特性:输入句末标点符号后自动删除前文空格

Open YiruiZheng opened this issue 4 years ago • 6 comments
trafficstars

希望能添加下面的特性,在句末输入标点符号后,可以自动删除前文的空格。 现在在输入时,如果输入

I like hallelujahIM .

再打上句号的话,就hallelujahIM的空格就会保存下来。我发现有的输入法(如安卓上的触宝输入法)是可以自动把句末的标点符号前的空格去除掉的。比如说逗号、句号、感叹号、括号的右半部分等,其前方是不需要保留空格的。

只是一个很小的提升,不知道到工作难度如何。作者有时间的话就考虑一下。谢谢!

YiruiZheng avatar Mar 25 '21 10:03 YiruiZheng

可以做,也不难。参见 https://github.com/dongyuwei/hallelujahIM/blob/master/src/InputController.mm#L198

逗号、句号、感叹号、括号的右半部分

能不能列举全面一些?可以统一处理。

dongyuwei avatar Mar 26 '21 04:03 dongyuwei

参考了维基百科,常见英文标点有

  • 句点 period:“ . ”
  • 问号 question mark:“ ? ”
  • 感叹号 exclamation mark:“ ! ”
  • 逗号 comma:“ , ”
  • 冒号 colon:“ : ”
  • 省略号 ellipsis(众数:ellipses):“ … ”
  • 分号 semicolon:“ ; ”
  • 连字符 hyphen:“ - ”
  • 连接号 en dash:“ – ”
  • 破折号 em dash:“ — ”
  • 括号 brackets:
    • 小括号 parentheses; round brackets:“ ( ) ”
    • 中括号 square brackets:“ [ ] ”
    • 大括号 braces; curly brackets:“ { } ”
  • 引号 quotation marks:
    • 双引号 double quotation marks:“ " ”
    • 单引号 single quotation marks:“ ' ”
  • 缩写及所有格符号 apostrophe:“ ' ”
  • 斜杠 slash:“ / ”

这其中大多数是前面是不要空格的,除了几种括号的左半边。引号的处理比较复杂,左半边不需要,但是英文左右引号是相同的。破折号一般情况下不加空格,除了新闻报纸为了方便排版会加。另外还有下划线“_”,虽然用得不是很多。其他的符号一时就想不起来。 多谢!

可以做,也不难。参见 https://github.com/dongyuwei/hallelujahIM/blob/master/src/InputController.mm#L198

逗号、句号、感叹号、括号的右半部分

能不能列举全面一些?可以统一处理。

YiruiZheng avatar Mar 26 '21 09:03 YiruiZheng

这个功能我上周日试了一下,比我想的要难,暂时没有搞定。已经输出的字符要删掉不是那么容易。

dongyuwei avatar Apr 01 '21 07:04 dongyuwei

作者辛苦了。不着急,有这个耐心。整个输入法用起来已经非常舒服了,感谢大佬! 我平常工作也得编程,很多事情看起来简单,真弄起来就很复杂,深有体会 ORZ.

YiruiZheng avatar Apr 01 '21 10:04 YiruiZheng

可以试试在 Preferences 配置里面不勾选 ‘Commit word with space’

dongyuwei avatar Jul 13 '21 01:07 dongyuwei

倒也是一种思路,不过我觉得也有局限性。使用回车的同时无法进行选择,如果第一候选词不是想要的词就用不了。

YiruiZheng avatar Jul 13 '21 22:07 YiruiZheng

我一开始把"Commit word with space“关了,但后来还是打开了,发现好像删除一个多余的空格还是比多敲一个space的情况要少。但的确, 像 @YiruiZheng mentioned那用note, 有些情况下,删除多余空格的确比较麻烦,比如给文件命名时 e.g. file-name。

但我觉得根据标点符号删除多余空格可能也比较难exhaustively包含所有的标点和情况。

所以我觉得可不可以根据不同的选词key来动态地决定是否在词后增加space。比如,如果用户用“enter”或“tab”选词,则不添加space,如果用户用“space”选词,则在词后添加space。这样可以在最开始就决定,而不用在事后额外删除不想要的space。

这个就好像在中文输入法下,你用空格选词就输入中文,但敲回车就直接输入字母。

https://user-images.githubusercontent.com/33796896/190024508-1aeea314-7630-47e0-af1f-dc67907c3c15.mp4

但在hallelujahIM下,用这个不同的选词键来决定是否添加一个space。

stevenlis avatar Sep 13 '22 23:09 stevenlis

如果用户用“enter”或“tab”选词,则不添加space,如果用户用“space”选词,则在词后添加space

这个是可以的,我之前也想过。

dongyuwei avatar Sep 14 '22 04:09 dongyuwei

https://github.com/dongyuwei/hallelujahIM/releases/tag/v1.6.0 最新版实现了下面的功能:

  • Space 空格键选词默认会自动附加一个空格在单词后面,可以在配置页面关闭自动附加空格功能。
  • Enter 回车键选词则不会附加空格。

@StevenLi-DS @YiruiZheng

dongyuwei avatar Sep 14 '22 04:09 dongyuwei

很好用 感恩🙏

https://user-images.githubusercontent.com/33796896/190235175-492f9b04-e356-4755-bab3-e731cdacd791.mp4

stevenlis avatar Sep 14 '22 18:09 stevenlis

同时发现了一个小问题。在输入某些 标点符号 时会直接触发选词并添加空格。 比如文件命名时file- name. pdf 或是一些带有hyphen的compound words,比如long-term

https://user-images.githubusercontent.com/33796896/190238570-4d18935e-3d3f-4bbe-8111-725e757a3fe7.mp4

stevenlis avatar Sep 14 '22 18:09 stevenlis

https://github.com/dongyuwei/hallelujahIM/releases/tag/v1.6.1 解决了标点符号的问题。目前比较粗暴,所有标点符号都不自动附加空格了。

dongyuwei avatar Sep 15 '22 01:09 dongyuwei

一些带有hyphen的compound words,比如long-term。

这种可能需求特殊处理,有点麻烦。

dongyuwei avatar Sep 15 '22 01:09 dongyuwei