Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
YiruiZheng opened this issue Mar 25, 2021 · 13 comments
Closed

Comments

@YiruiZheng
Copy link

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

I like hallelujahIM .

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

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

@dongyuwei
Copy link
Owner

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

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

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

@YiruiZheng
Copy link
Author

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

  • 句点 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

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

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

@dongyuwei
Copy link
Owner

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

@YiruiZheng
Copy link
Author

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

@dongyuwei
Copy link
Owner

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

@YiruiZheng
Copy link
Author

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

@stevenlis
Copy link

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

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

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

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

CS-bJZx130U.mp4

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

@dongyuwei
Copy link
Owner

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

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

@dongyuwei
Copy link
Owner

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

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

@StevenLi-DS @YiruiZheng

@stevenlis
Copy link

很好用 感恩🙏

CS-PQh6gbxI.mp4

@stevenlis
Copy link

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

CS-cmZpBNdc.2.mp4

@dongyuwei
Copy link
Owner

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

@dongyuwei
Copy link
Owner

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants