%% Created:2012-05-10
%% Updated:2012-05-12
在前篇中我主要介绍了在vim中通过digraph输入特殊字符。
但是实际应用中,我发现这个方法并不是特别好。
因为要通过两个字母定义相应的字符,由于其定义的字符范围覆盖太广,
使其并不特别容易记忆,很可能出现错误输入。主要问题集中在数学符号。
因此我决定使用keymap来进行输入这些特殊字符,
因为keymap可以用多个字符来定义一个特殊字符。
基于Vim-LaTex suite和vim.org的math.vim的基础上,完成了这个小插件:
Rykka/mathematic.vim
Update:
增加了一个':KeyHelper'命令,可以根据当前输入动态显示匹配keymap,
方便察看和输入特殊字符。
基本说明:
上标字符统一使用 ‘`’前缀, 下标字符统一使用 ‘_’前缀,
(最新的easydigraph.vim中也默认定义了此部分命令)
其他字符统一使用 ‘\’前缀,
主要解决输入时和普通字符输入的冲突,
除了简捷命令,也可以使用 LaTex 命令输入。
-
上标符号和下标 :
`0 ⁰ ... ( 0-9 + - ( ) / ^ . , > < )
`a ᵃ ... ( a-z except q , Some of A-Z)
_0 ₀ _+ ₊ ... ( 0-9 + - ( ) / ^ )
_a ₐ _e ₑ ... (a e h i k l m n o p r s t u v x)
-
快捷命令 :
Greek Alphabet:
\GA => Α , \GD => Δ
\Ga => α , \Gg => γ
Fractions :
\1/2 => ½ , \1/3 => ⅓
\2/3 => ⅔ , \3/5 => ⅗
Arrows :
\<-- => ← , \--v => ↓ , \==> => ⇒
\<--- => ⟵ , \--^ => ↑ , \===> => ⟹
Grouping :
\(U => ⎛ , \]U => ⎤
\(M => ⎜ , \]M => ⎥
\(B => ⎝ , \]B => ⎦
\(V => ︵ , \]V => ︺
Operator :
\U. => ⨃ , \UU => ∪ , \UN => ∩
\I1 => ∫ , \I3 => ∭ , \I= => ⨎
\IO1 => ∮ , \IO3 => ∰ , \IOW => ∳
\PDF => ∂ , \THF => ∴ , \BCS => ∵
\MUL => × , \DIV => ÷
\SQRT2 => √ , \SQRT3 => ∛ , \SQRT4 => ∜
Relations :
\<= => ≤ , \>= => ≥ , \!= => ≠
\<~ => ⪝ , \>~ => ⪞ , \!> => ≯
\o+ => ⊕ , \o- => ⊖ , \ox => ⊗
\O+ => ⨀ , \O+ => ⨁ , \OX => ⨂
Sets :
\SUBO => ⊂ , \SUBE => ⊆ , \SUBN => ⊄
\SUPO => ⊃ , \SUPE => ⊇ , \SUPX => ⊉
\AND => ∧ , \OR => ∨ , \NOT => ¬
\XOR => ⊕
\EXTS => ∃ , \EXTN => ∄ , \FALL => ∀
\BOT => ⊥ , \TOP => ⊤ , \LFT => ⊣
\RGT => ⊢
Misc :
\INF => ∞ , \PRT => ∝
\ARC => ⌒ , \ANG => ∠
\DEGC => ℃ , \DEGF => ℉
\OHM => Ω , \MHO => ℧ , \ANGS => Å
\a/c => ℀ , \a/s => ℁ , \No => №
\TM => ™ , \CO => © , \RO => ®
\AE => Æ , \ae => æ , \fi => fi
Fonts :
\FKH => ℋ , \FKI => ℑ , \FKL => ℒ
-
Latex 命令:
基于 Vim-Latex suite.
只包含拥有对应unicode字符的命令。
修正了部分Vim-Latex suite中错误的对应:
(\bigodot \bigoplus \bigotimes \long...arrow \iint ...)
e.g:
\neq => ≠ , \Leftarrow => ⇐
\simeq => ≃ , \Re => ℜ
...
你可以使用Vim-Latex suite 以了解对应命令 或者察看这个PDF http://amath.colorado.edu/documentation/LaTeX/Symbols.pdf
-
输入助手 (:KeyHelper
):
输入助手使察看和输入更方便。
:KeyHelper 打开窗口。
它将根据当前输入动态显示匹配符号。
在KeyHelper窗口中按回车可以将符号添加到文件。
同时也可以输入更多unicode字符:
0x2500-0x2800, 0x1D100 - 0x1D1DD
使用方法:
解压缩到~/.vim 文件夹
-
可以定义映射方便使用。
" 开始使用
map <leader>km :set keymap=mathematic<CR>
" 停止使用
map <leader>kn :set keymap=<CR>
" 察看具体命令,可以根据需要修改
map <leader>kvm :sp ~/.vim/keymap/mathematica.vim<CR>
" 显示当前输入命令
" set showcmd
" 如果需要更长的输入时间
" set timeoutlen=3000
" 或者关闭输入超时
" set notimeout
-
使用 KeyHelper: (:KeyHelper (<leader>\)
)
" if your mathematic.vim is not in '~/.vim/bundle/' or '~/.vim/keymap'
" then you should set g:mathematic_user_dir
" let g:mathematic_user_dir = "~/.vim/myplug/keymap/mathematic.vim"
" map KeyHelper with another mapping
" nmap <leader>kk :KeyHelper<CR>
" if you want fuzzy matching
" let g:mathematic_fuzzymatch = 1
如果有建议或意见请post到https://github.com/Rykka/mathematic.vim. 如果需要增加keymap命令,请post命令和字符。