十年前以 32 位元的程序为主,今 32 与 64 位的程序共存。为了不同的应用临时换个 32/64 位的 dll 作为外挂的输入法还能免强使用。但是随着 Text Service Framework 逐渐成为主流,实再没时间再做此复杂的实现。 所幸由于智能手机的发展,这几年对于 PC 中汉字输入需求不再像十年前那样频繁,偶尔有输入也是在 vim 中记一点什么。
另一方面,vim 输入中文需要在几个模式之前来回切换输入法,写惯了拉丁字母的肌肉记忆不适应再插入一歩换输入法的中间歩骤。
Vim 中虽然已经有了例如 vimim 这样的输入法插件,但是在我的笔记本上无法流畅打字。于是试一试能否高效地实现输入汉字功能,遂成此文。
该输入法由于不需要重新造 GUI 的轮子,实现起来十分简单。估计又可以用上十年。
\
)#
,因为中文用不到该符号,在德语键盘上又易按)
附两张使用截图:第一张是用郑码输入文字,可以看到,只要有字体的支持,大字集是可以使用的;第二张是反查其中的“查”字。
.vimrc
的
call plug#begin(...)中加入
Plug 'jagd/vime'
再绑定快捷键,比如,绑定 Ctrl+_
:
imap <silent><C-S-_> <C-_> inoremap <silent><C-_> <C-R>=VimeSwitch()<CR> inoremap <silent><C-_>. <C-R>=VimeToggleFullPunct()<CR> nnoremap <silent><C-_> :call VimeInverseLookup()<CR>在插入模式下,
<Ctrl+_>
切换中/英文输入,<Ctrl+_>.
切换全半角;普通模式下 <Ctrl+_>
反查光标所指的汉字。
若要挂上自己的码表,在 .vim
或其它 runtime 目录下(runtime 依序寻找文件,故不须放在此插件目录)的 vime-table.txt 为自定义的码表。这是一个从小到大有序的大数组(二分查找),越靠前的字词候选也越排前。例如:
let g:vimeTable = [ \'a','啊', \'a','阿', \'ba','吧', \'ba','把', \'ba','八', \'zun','尊', \'zun','遵', \'zun','樽', \]拼音码表亦是如是,只需将文件命名为
vim-table-pinyin.txt
。
从 Rime 码表转换成所需的格式请参考:
awk '{printf("%s %08d %08d %s\n",$2,99999999-$3,n++,$1)}' | sort | awk "{printf(\"\\\\'%s','%s',\\n\",\$1,\$4)}"