若用 vim 的插件管理器 vim-plug ,在 .vimrc
的
call plug#begin(...)
中加入
Plug 'jagd/vime'
比如用 Ctrl
+_
(有些OS中需要设置imap <silent><C-S-_> <C-_>
):
- 汉 / Latin 切换(插入模式)
inoremap <silent><C-_> <C-R>=VimeSwitch()<CR>
- 半角 / 全角(插入模式)
inoremap <silent><C-_>. <C-R>=VimeToggleFullPunct()<CR>
- 反查码表(普通模式)
nnoremap <silent><C-_> :call VimeInverseLookup()<CR>
- 输入法打开装态下,
#
后跟着小写拼音字母
- 默认关闭全角,若设为默认开启:
let g:vimeDefaultFullPunct = 1
- 全角时 LaTeX 自动关闭,以方便数学输入。
- 输入法打开并且半角时
\
后跟 LaTeX command。与LaTeX不同之处在于所有符号都需要\
引导,如- 德文引号
\glqq\grqq
得„“
,而英文引号仍需要\
符号以区分非数学输入,如\``\''
得“”
- 上下标需要
\
,如CO\_2
得CO₂
,H\^+
得H⁺
- Italic 或其它风格的拉丁/希腊字符例如
\mathitpsi\_p
得𝜓ₚ
- Umlaute 如
\"u
得ü
,\"e
得ë
- 其它数学或非数学的符号如
\cmark
得✓
;\xmark
得✗
- 德文引号
- 空格上屏,
<C-N>
与<C-P>
选择候选字词 - Vim 中
q/
可用此插件输入待搜索的字符,而q:
可用此插件输入包涵汉字的命令(如替换,grep,打开文件) - 设 vim 为 readline 的 EDITOR,便可以在 Shell 中输入汉字路径名
默认附帯了我自己用的郑码单字码表。
自定义码表名字为 vime-table.txt
,放在 ~/.vim
或其它 runtime 目录下。
由于 runtime 依序寻找文件,故不必存于此插件的文件夹中。
码表是一个从小到大编码排列有序的平面一维数组,两个元素一组用二分查找编码。
重码时越靠前的字词候选也越排前。
例如:
let g:vimeTable = [
\'a','啊',
\'a','阿',
\'ba','吧',
\'ba','把',
\'ba','八',
\'zun','尊',
\'zun','遵',
\'zun','樽',
\]
拼音码表亦是如是,只需将文件命名为 vim-table-pinyin.txt
。
Transforming from a format like https://raw.githubusercontent.com/jagd/Zhengma-Single-Character/master/table.txt
awk '{printf("%s %05d %s\n",$1,n++,$2)}' | sort | awk "{printf(\"\\\\'%s','%s',\\n\",\$1,\$3)}
Transforming from RIME style table:
awk '{printf("%s %08d %08d %s\n",$2,99999999-$3,n++,$1)}' | sort | awk "{printf(\"\\\\'%s','%s',\\n\",\$1,\$4)}"
- 一些 Unicode 符号(比如粗体/Fraktur字母)与一些国标扩展的汉字在 GVim 中有残影,
set rop
无法解决。NeoVim-Qt 中渲染正常。
lmap
is not helpful in this case, ascomplete()
function cannot be invoked in command line mode nor useless in search mode.