jieba.vim,做最好的 Vim 中文分词插件。

jieba.vim 正处于积极开发中,欢迎关注、Star ⭐️、下载试用最新进展,欢迎在 issue 讨论并提意见建议。

Vim/Nvim 中文编辑现状

Vim/Nvim 的中文文本编辑体验不足是广为人知的问题。由于中文不用空格分隔词语,Vim 的原生 word motion 功能无法有效发挥作用,因此用户只能依赖基本的 h/l 键位逐字移动光标。作为一名常用 Vim 写作的人,我对这方面的不便深有体会,经过调研确定没有已存在的完善项目后,我于一年多前开始在业余时间开发 jieba.vim,旨在解决这个问题。

jieba.vim 简介

jieba.vim 是一个基于 jieba 的 Vim/Nvim 中文分词插件,通过增强 w/W/e/E/b/B/ge/gE 键位,使 Vim 能够按中文词语移动光标。jieba.vim 的初版原型使用 python3 开发,初步解决了按词移动光标的问题。虽然(可能)由于其过于缓慢的词典加载速度并没有获得什么关注,但是基于该原型的 lua 移植版 neo451/jieba.nvim 在 Vim 中文编辑圈的小为人知还是证明了 jieba.vim 解决方案的有效性,给了我继续改进的动力。随后,我发布了 jieba.vim 的改进版,解决了其速度问题,并于近一个月开始重写 jieba.vim 的核心逻辑,更严谨地确立其发展方向。

jieba.vim 对自身的定位及路线图

Features 依重要性降序排序:

  1. jieba.vim 应保持其与 Vim 的兼容性。经过增强的 w/W/e/E/b/B/ge/gE 键位在无中文 ASCII 文本上应与 Vim 原生行为完全一致,其中包括各种特殊情况(例如 cw)。这需要通过大量测试,以及对单元测试的正确性验证(见 junegunn/vader.vim)予以保证。
  2. jieba.vim 应具有较快的速度(包括词典加载速度、键位反应速度、词典懒加载),以确保良好的用户体验。
  3. jieba.vim 应易于安装。通过发布预编译链接库,目前 jieba.vim 的最新稳定版已无需本地安装 Rust 并进行编译。
  4. jieba.vim 应具有较广的功能覆盖,例如对自定义 Vim 选项 'iskeyword''virtualedit''encoding' 的支持。
  5. jieba.vim 应易于从 neovim 使用,针对 neovim 将尝试直接从 lua 链接 Rust 核心 crate,从而免除 lua 调用 python、python 再调用 Rust 的额外调用关系。
  6. 此外,对 word text object iw/iW/aw/aW 的支持也处于计划内。

jieba.vim 分支一览

分支 简介 开发语言 许可
初版原型 (main) normal 模式下按词移动光标完善,其余模式下有 bug。 python3 MIT
改进版 (7d03b0cc) normal 模式下按词移动光标完善,其余模式下有 bug,词典加载速度快 60%。 Rust + python3 MIT
最新稳定版 (v1.0.4) 目前已完成 normal/visual/operator-pending 模式下的 {count}w/W/e/E/b/B/ge/gE/. 键位,欢迎下载试用。 Rust + python3 Apache v2.0
最新进展 (rust) 将尝试支持 'iskeyword' Vim 选项。 Rust + python3 Apache v2.0