起因
我的博客已经用VS Code编写文档有一阵子了。
当我尝试输入ctrl+左/右箭头后,光标由于不能进行中文分词,会直接跳转到这一行的结尾,或者下一个空格。这不像typora,它的光标移动逻辑是基于中文分词的,而我恰巧十分依赖这项功能:比起直接使用左右箭头的以单个汉字为单位进行调整来说,这种基于中文分词的移动方式快了许多,可以进行相对快速而不失精确的定位和调整。
经过市场搜索,虽然已经有一个类似的拓展StephanosKomnenos.jieba实现了类似功能,体验下来也非常好。
但是我想要一个足够开箱即用且可定制的拓展,所以我花了点时间实现了dangjinghao.cncursor这个插件,满足了我自己的需求。可直接在VS Code的拓展市场上搜索cncursor以下载。它被开源在了GitHub上:https://github.com/dangjinghao/cncursor。

功能
自动化覆盖默认的ctrl/cmd+左右箭头以实现无感使用,可通过禁用插件并重载窗口关闭
在安装成功后第一次按下快捷键,会惰性从GitHub下载
nodejieba依赖支持用户自定义单词与用户字典导入路径配置,这样可以让高级用户更好地配置自己的分词设置

例如句子“通过反向传播算法更新网络的权重参数”,在没有添加用户自定义中文分词之前,会将“反向传播”分割为两个词,因此会进行如下图的基于词的移动:

而在settings中添加“反向传播”到
Cncursor: User Words项中:
重启后就会将“反向传播”视为一个词进行光标移动:

另外还支持直接导入特定格式的字典,具体文件格式请看cppjieba项目下的user.dict.utf8文件。
支持基于词的移动,选择和删除功能
总结
我在Linux-x64和macOS M1平台使用这个插件已经有大约半年时间了,目前来说体验很好。因此打算写一篇文章分享介绍一下。