惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
D
DataBreaches.Net
C
Check Point Blog
雷峰网
雷峰网
小众软件
小众软件
GbyAI
GbyAI
美团技术团队
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
罗磊的独立博客
大猫的无限游戏
大猫的无限游戏
WordPress大学
WordPress大学
MyScale Blog
MyScale Blog
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
Apple Machine Learning Research
Apple Machine Learning Research
Y
Y Combinator Blog
Jina AI
Jina AI
爱范儿
爱范儿
Last Week in AI
Last Week in AI
MongoDB | Blog
MongoDB | Blog
I
InfoQ
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美

jdhao's digital space

Conversion between base64 and OpenCV or PIL Image 腾讯云对象存储博客图床开启 CDN 加速(不需要购买额外域名) Search and Replace in Multiple Files in Vim/Neovim Change Table Column Width in LaTeX Image or Table Side by Side in LaTeX LaTeX 并排显示图像或表格 Firenvim: Neovim inside Your Browser Content inside HTML tags missing in Latest Hugo? Creating Markdown Front Matter with Ultisnips Labelme JSON 标注格式转 voc XML 格式 Nifty Nvim Techniques That Make My Life Easier -- Series 6 macOS 下如何为视频制作字幕 Running Command Asynchronously inside Neovim Resolving Merge Conflict after Git Stash Pop Pylint: command not found? A Hands-on Experience with Neovim's Built-in LSP Support How to Convert PDF to Images with Imagemagick 互联网上常用缩略语集锦 File Backup in Neovim Converting PDF Pages to Images with Poppler Nifty Nvim Techniques That Make My Life Easier -- Series 5 Neovim Configuration for System-wide Use How to sort a list of tuple or list in Python -- lambda or itemgetter? Building A Vim Statusline from Scratch 人类第一颗原子弹爆炸始末 Distributed Training in PyTorch with Horovod Learning Expect Programming Essential Knowledge about SSH Nifty LaTeX Techniques -- Series 1 更改 Adsense 邮寄地址,重新寄送 PIN
Vim 实现的输入法体验
2021-02-26 · via jdhao's digital space

文接上回,Vim 虽然贵为编辑器之神,有一个没有解决好的问题就是输入中文,以及中英文的切换问题。最近也尝试了一些试图利用 Vim 提供的功能,在 Vim 中实现输入法的插件。本文做一总结点评。

VimIM#

VimIM 是一个比较早尝试在 Vim 中实现输入法的插件,可惜在 2012 年就停止更新了。2012 年正是 Vim 的灰暗时期,当时连 job api 都没有出来,Vim 中调用函数只能是 blocking 方式的。

使用方式,首先下载 VimIM,可以用插件管理器或者手动下载。

但是这个仓库只包含代码,不包含数据,从 这里 可以下载到字典数据,把 vimim.cjk.txtvimim.gbk.bsddbvimim.txt 放到 VimIM 插件的 plugin 目录下。在我的系统上,VimIM 安装目录在 ~/.local/share/nvim/plugged/VimIM/plugin

wget -P  ~/.local/share/nvim/plugged/VimIM/plugin https://raw.fastgit.org/vimim/vimim/master/plugin/vimim.cjk.txt
wget -P  ~/.local/share/nvim/plugged/VimIM/plugin https://raw.fastgit.org/vimim/vimim/master/plugin/vimim.gbk.bsddb
wget -P  ~/.local/share/nvim/plugged/VimIM/plugin https://raw.fastgit.org/vimim/vimim/master/plugin/vimim.txt

下面是最小的可运行配置:

set runtimepath+=/home/haojiedong/.local/share/nvim/plugged/VimIM
" 关闭云输入
let g:Vimim_cloud=-1

打开 Vim,进入 insert 模式,使用 Ctrl + Shift + / 开启中文输入(这个是一个开关,再按一次关闭中文输入),输入英文字符,会出现弹出菜单,按数字可以选择汉字。

体验:输入速度很快,并且匹配很准,没有延迟的感觉。

=- 可以往后、往前翻页,Tab 可以在给出的候选项之间切换,按空格可以让选中的词语上屏,按 Enter 输入英文字符。

在 Vim 7.4 中测试可以运行,使用 Neovim 无法工作,不清楚具体是哪里有问题,这个插件好久没更新了,可能是不兼容了。

参考#

ZFVimIM#

ZFVimIM 是一个比较新的用 Vim 实现的输入法。

使用如下的配置:

call plug#begin(expand('~/.local/share/nvim/plugged'))
  Plug 'ZSaberLv0/ZFVimIM'
  Plug 'ZSaberLv0/ZFVimJob'
call plug#end()

" 使用本地 db 的配置
function! s:zfvimim_init() abort
  let db = ZFVimIM_dbInit({'name' : 'jd_db'})
  call ZFVimIM_cloudRegister({
              \   'mode' : 'local',
              \   'dbId' : db['dbId'],
              \   'repoPath' : expand('~/scratch_dir/'),
              \   'dbFile' : 'pinyin.txt',
              \   'dbCountFile' : 'pinyin_count.txt',
              \ })
endfunction

augroup zfvim_conf
  autocmd!
  autocmd VimEnter * call s:zfvimim_init()
augroup END

接下来需要下载字典,也就是作者说的 db,从 这里 下载拼音文件 pinyin.txt 和 count 文件 pinyin_count.txt,放到一个测试的目录,上面的配置中,repoPath 对应的就是这个文件存放的目录。

然后使用上述配置打开 Neovim,在插入模式下,使用 ;; 打开中文输入模式,开始输入即可。由于 pinyin.txt 只包含单个字拼音的数据,所以一点也不智能,输入拼音词组,需要自己一个个去选择数字来组词,所以速度比较慢。可以使用这个插件提供的 IMAdd 命令添加个人词组。例如, :IMAdd 云淡风轻 yundanfengqing

加载一个更大的词库,能够缓解输入时需要自己组词的尴尬,可以使用 这里 提供的 pinyin_huge.txt 和 pinyin_huge_count.txt 测试。

这个插件还支持云输入模式,需要添加下面的插件和配置:

" 插件地址:https://github.com/ZSaberLv0/ZFVimIM_openapi
Plug 'ZSaberLv0/ZFVimIM_openapi'

let g:ZFVimIM_openapi_enable=1

体验:有一些延迟卡顿,但是在 Neovim 下是可以正常使用的,云输入法挺好用的,比较准确(前提是可以正常使用 wget 进行请求)。