vim特殊字符输入和整理
special character input in vim
%% Created:2012-01-15
%% Updated:2012-02-05

本文对使用Vim输入特殊字符的方法进行了简单的介绍,
并对Vim内digraphs(二合字母)所默认定义的特殊字符进行了整理(不显示字符除外),
并包含部分Vim未定义而比较常见的字符。

= 说明 INTRO =

很多字符不能通过普通键盘直接输入,比如 "©","€","ā"…
要输入它们,我们需要利用输入法或软键盘。

而在Vim内,即使不使用输入法,
我们也可以方便的查看和输入特殊字符。

# 查看字符数值

如果是已有文本的对象可以在vim中直接查看。
比如"€", Normal Mode下,在此字符上按下"ga",则会显示
<€> 8364, Hex 20ac, Octal 20254
8364, 20ac 即分别为"€"的十进制数值和十六进制数值。

在'statusline'中也可以设置'%b'或'%B',
显示光标下字符的十进制数值或十六进制数值。

如果没有特殊字符的电子文本,
则需要到 http://unicode.org/charts/ 去查找。

# 使用字符数值 Character Value (:h i_ctrl-v_digit)
第一种方法是输入字符数值,即<Ctrl-V>+u+字符十六进制数值

比如,要输入"€"
我们可以在Insert Mode下通过按下<Ctrl-V>u20ac来输入。

这种方法的缺点在于字符的数值很难记忆。

# 使用键盘映射 (:h mbyte-keymap):
第二种方法是通过键盘映射(keymap)

通过设置'keymap',可以在Insert Mode下直接输入相对应的字母。

比如'set keymap=greek',则我们就可以直接输入希腊字母了。

和使用对应语言的键盘类似,
缺点是默认定义的keymap有限,并且也存在布局和记忆的问题。

# 使用二合字母 (:h digraphs)
第三种方法是通过二合字母(digraphs)。

vim默认拥有(+digraphs)特性,
即在vim的Insert Mode下按下<Ctrl-K>{char1}{char2},
可生成digraphs内相对应的特殊字符。

比如'<Ctrl-K>Eu'则生成 '€',相对输入数值更方便记忆。

对于同一系列的字符,vim的定义更有规律,更方便记忆。
同时也能自己定义需要的字符。

其缺点在于多种字符定义之间可能存在意义上的冲突,
最好能在不同的情况下使用不同的digraphs定义。

# 定义二合字母
Vim默认定义的二合字母是有限的,可以通过
:dig[raphs] {char1}{char2} {number} ...
来定义新的二合字母, {number}为字符的十进制数值。

比如定义'₨'为Rs,其十进制数值为8360,则
:digraphs Rs 8360

下文中的uxxxx是字符的十六进制数值,定义时需要转化为十进制。

# easydigraph.vim
这是我的一个插件 https://github.com/Rykka/easydigraph.vim
可以将{motion}范围内的字符通过vim的digraphs转化为特殊字符。
这在输入连续的特殊字符,比如日文、希腊文等文字时,
相比每输入一个字符都要按下<Ctrl-K>更加便捷。

比如:
'o5hayou5 gozai5masu'
可以直接通过 easydigraph的默认快捷键 '<leader>bb'以及动作'3iw'
转化为 'おはよう ございます'

另:
当前缀字符为 '\' 时,如'\\','\a' 字符将保持不变,
唯一的例外为 '\/' (至vim7.3)
这在转化包含普通字符的digraph时有用。
比如在 '\(\2\+\32SnS\)' 上按键'<leader>bbiW' 会转化为 '(2+3²ⁿ)'

= 常用 COMMON =

Fm ♀    Ml ♂

Eh ⌂    TR ⌕

SM ℠    TM ™
Co ©    Rg ®
PO ℗

oC ℃    oF ℉
%0 ‰    u2031 ‱
N0 №
Om Ω    AO Å
co ℅    Rx ℞    My µ

# Currency:
Cu ¤    Pt ₧    W= ₩
Eu €    Li ₤    Pd £    Ct ¢    Ye ¥

₳ ฿ ₵ ¢ ₡ ₢ ₠ $ ₫ ₯ € ƒ ₣ ₲ ₴ ₭ ℳ  ₥ ₦ ₧ ₱ ₰ £ ₹ ₨ ₪ ₸ ₮
http://en.wikipedia.org/wiki/Currency_sign


== Misc Symbols ==

# Music:
Md ♩    M8 ♪    M2 ♫    u266c ♬
Mb ♭    Mx ♮    MX ♯

# Weather:
u2600 ☀ u2601 ☁ u2602 ☂ u2603 ☃
SU ☼    u263d ☽ u263e ☾
*1 ☆    *2 ★

# Face:
0u ☺    0U ☻   u2639 ☹

<H ☜    >H ☞    u261d ☝ u261f ☟

OK ✓    XX ✗
u2611 ☑ u2612 ☒ u2610 ☐

cS ♠    cH ♡    cD ♢    cC ♣
u2664 ♤ u2665 ♥ u2666 ♦ u2667 ♧

# Signs:
u2621 ☡ u2622 ☢ u2623 ☣
u2672 ♲ u267b ♻ u267e ♾
u26a0 ⚠ u267f ♿ u26a1 ⚡

# Religions:
u271d ✝ u2625 ☥ u262a ☪ u2624 ☤
u262b ☫ u262c ☬ u262D ☭
u262e ☮ u262f ☯
-X ✠

# Terms:
u2692 ⚒ u2694 ⚔
u2693 ⚓ u2695 ⚕ u2696 ⚖ u269a ⚚
u2697 ⚗ u2698 ⚘ u2699 ⚙ u269b ⚛

See http://en.wikipedia.org/wiki/Miscellaneous_Symbols

= 数学 MATH =

# Roman numeral:
1R  Ⅰ Ⅱ Ⅲ Ⅳ Ⅴ Ⅵ Ⅶ Ⅷ Ⅸ  Ⅹ  Ⅺ  Ⅻ
1r  ⅰ ⅱ ⅲ ⅳ ⅴ ⅵ ⅶ ⅷ ⅸ  ⅹ  ⅺ  ⅻ

# Chinese numeral:
1c  ㈠ ㈡ ㈢ ㈣ ㈤ ㈥ ㈦ ㈧ ㈨

# Digit with Full Stop:
1.  ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐
# Fraction:
12  ½ ⅓ ⅔ ¼ ¾ ⅕ ⅖ ⅗ ⅘ ⅙ ⅛

# Arrow:
<= ⇐    => ⇒    == ⇔
<- ←    -> →    <> ↔    -! ↑    -v ↓    UD ↕

AN ∧    OR ∨    NO ¬

+- ±    -+ ∓    -2 −
*- ∗    *X ×    -: ÷    /f ⁄
RT √    u221b ∛ u221c ∜
.P ⋅    Ob ∘    Sb ∙

u2295 ⊕ u2296 ⊖ u2297 ⊗ u2298 ⊘
0. ⊙    02 ⊚    u229b ⊛ u229c ⊜

00 ∞
0( ∝
/0 ∅

FA ∀    dP ∂    TE ∃    u2204 ∄
DE ∆    NB ∇
*P ∏    +Z ∑

# SET:
(- ∈    )- ∋
u2209 ∉ u220c ∌
(U ∩    )U ∪
(C ⊂    )C ⊃    (_ ⊆    )_ ⊇
u2284 ⊄ u2285 ⊅ u2288 ⊈ u2289 ⊉

# Geometry:
-L ∟    -V ∠    PP ∥    DG °    (A ⌒
u2221 ∡ u2222 ∢ u2226 ∦

-T ⊥    u22A4 ⊤
u22a2 ⊢ u22a3 ⊣

# Calculas:
In ∫    DI ∬    u222d ∭
Io ∮    u222f ∯ u2230 ∰
Iu ⌠    <7 ⌈    >7 ⌉
Il ⌡    7< ⌊    7> ⌋

</ 〈   >/ 〉

.: ∴    :. ∵    :R ∶    :: ∷

?1 ∼    CG ∾
?= ≃    ?= ≅   ?2 ≈   HI ≓    =3 ≡
=< ≤    >= ≥   <* ≪   >* ≫    !> ≯   !< ≮

# Super Script
0S1S2S3S4S5S6S7S8S9S +S-S=S(S)S nS
⁰ ¹ ² ³ ⁴ ⁵ ⁶ ⁷ ⁸ ⁹  ⁺ ⁻ ⁼ ⁽ ⁾  ⁿ

u2071 ⁱ

# Sub Script
0s1s2s3s4s5s6s7s8s9s +s-s=s(s)s
₀ ₁ ₂ ₃ ₄ ₅ ₆ ₇ ₈ ₉  ₊ ₋ ₌ ₍ ₎

u2090 ₐ u2091 ₑ u2092 ₒ u2093 ₓ u2094 ₔ u2095 ₕ
u2096 ₖ u2097 ₗ u2098 ₘ u2099 ₙ u209a ₚ u209b ₛ u209c ₜ

# PRIME:
1'2'3'  u2057
′ ″ ‴   ⁗

# REVERSED PRIME:
1"2"3"
‵ ‶ ‷

See http://en.wikipedia.org/wiki/Mathematical_operators_and_symbols_in_Unicode

= 语言 LANGUAGES =

== 拉丁 LATIN ==

# 读音符号 DIACRITIC

Acute accent        : '' ´  á ć é ǵ í ḱ ĺ ḿ ń ó ṕ ŕ ś ú ẃ ý ź
Grave               : '! `  à è ì ò ù ẁ ỳ
Circumflex          : '> ^  â ĉ ê ĝ ĥ î ĵ ô ŝ û ŵ ŷ ẑ
Tilde               : '? ~  ã ẽ ĩ ñ õ ũ ṽ ỹ
Macron      ('m ¯)  : a-    ā ē ḡ ī ō ū
Breve               : '( ˘  ă ĕ ğ ĭ ŏ ŭ
Dot                 : '. ˙  ḃ ċ ḋ ė ḟ ġ ḣ ı ŀ ṁ ṅ ṗ ṙ ṡ ṫ ẇ ẋ ẏ ż
Diaeresis           : ': ¨  ä ë ḧ ï ö ẗ ü ẅ ẍ ÿ
Cedilla             : ', ¸  ç ḑ ģ ḩ ķ ļ ņ ŗ ş ţ
Underline           : '_ _  ḇ ḏ ẖ ḵ ḻ ṉ ṟ ṯ ẕ
Stroke              : '/ /  đ ǥ ħ ł ø ŧ ƶ
Double acute accent : '" ˝  ő ű
Ogonek              : '; ˛  ą ę į ǫ ų
Caron               : '< ˇ  ǎ č ď ě ǧ ǐ ǰ ǩ ľ ň ǒ ř š ť ǔ ž
Ring above          : '0 ˚  ů ẘ ẙ
Hook                : a2    ả ẻ ỉ ỏ ủ ỷ
Horn                : o9    ơ ư

See http://en.wikipedia.org/wiki/Diacritical_marks

# 特殊 special

NG Ŋ    ng ŋ
'n ʼn

D- Ð    d- ð

ED Ʒ    u0292 ʒ
EZ Ǯ    ez ǯ

yr Ʀ
kk ĸ
TH Þ    th þ
ss ß

AA Å    AE Æ
aa å    ae æ

A1 Ǟ    A3 Ǣ    A7 Ǡ
a1 ǟ    a3 ǣ    a7 ǡ

O1 Ǭ
o1 ǭ


# 连字 LIGATURE

OE Œ    oe œ
OI Ƣ    oi ƣ
IJ IJ    ij ij
ff ff    fi fi    fl fl    ft ſt    st st

u1d6b ᵫ
ufb03 ffi ufb04 ffl

See http://en.wikipedia.org/wiki/Typographic_ligature

== 希腊 GREEK ==

A*B*G*D*E*Z*Y*H*I*K*L*M*N*C*O*P*R*S*T*U*F*X*Q*W*J*V*
Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω Ϊ Ϋ

a*b*g*d*e*z*y*h*i*k*l*m*n*c*o*p*r*s*t*u*f*x*q*w*j*v* *s
α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω ϊ ϋ  ς


a%e%y%i%o%u%w%   u3 j3 '%
ά έ ή ί ό ύ ώ    ΰ  ϵ  ϴ

T3M3K3P3    'G
Ϛ Ϝ Ϟ Ϡ     Ϙ

t3m3k3p3    ,G
ϛ ϝ ϟ ϡ     ϙ

;',';!,!?;?,!:?:
ἀ ἁ ἂ ἃ ἄ ἅ ἆ ἇ

== 西里尔  CYRILLIC ==

A=B=V=G=D=E=Z=I=J=K=L=M=O=P=R=S=T=U=F=H=C=Y=
А Б В Г Д Е З И Й К Л М О П Р С Т У Ф Х Ц Ы

a=b=v=g=d=e=z=i=j=k=l=m=o=p=r=s=t=u=f=h=c=y=
а б в г д е з и й к л м о п р с т у ф х ц ы

IOIEDSIIYILJNJTsKJDZSc  JEJUJA    D%G%J%V%Z%C%S%
Ё Є Ѕ І Ї Љ Њ Ћ Ќ Џ Щ   Э Ю Я     Ђ Ѓ Ј Ў Ж Ч Ш

ioiedsiiyiljnjtskjdzsc  jejuja    d%g%j%v%z%c%s%
ё є ѕ і ї љ њ ћ ќ џ щ   э ю я     ђ ѓ ј ў ж ч ш

Y3O3F3V3C3G3    ="%"
Ѣ Ѫ Ѳ Ѵ Ҁ Ґ     Ъ Ь

y3o3f3v3c3g3    ='%'
ѣ ѫ ѳ ѵ ҁ ґ     ъ ь

== 希伯来  HEBREW ==

A+B+G+D+H+W+Z+X+J+K+L+M+N+S+E+P+Q+R+T+
א ב ג ד ה ו ז ח י כ ל מ נ ס ע פ ק ר ת

TjZjZJSh    K%M%N%P%
ט ץ צ ש     ך ם ן ף

== 阿拉伯  ARABIC ==

注:在某些浏览器上可能从左至右显示。

a+b+t+g+x+d+r+z+s+c+e+i+f+q+k+l+m+n+h+w+j+y+
ا ب ت ج خ د ر ز س ص ع غ ف ق ك ل م ن ه و ى ي

H'aMaHwHahyHtmtkhkdksnddtjzH  aSp+v+gf    ,+;+?+    ++
ء آ أ ؤ إ ئ ة ث ح ذ ش ض ط ظ    ٰ پ ڤ گ     ، ؛ ؟     ـ

:+"+=+/+'+  1+3+0+
 ً  ٌ  ٍ  َ  ُ    ِ  ّ  ْ

0a1a2a3a4a5a6a7a8a9a
۰ ۱ ۲ ۳ ۴ ۵ ۶ ۷ ۸ ۹

== 日文 JAPANESE ==

a5i5u5e5o5  A6I6U6E6O6
あいうえお  アイウエオ
A5I5U5E5O5  a6i6u6e6o6
ぁぃぅぇぉ  ァィゥェォ
kakikukeko  KaKiKuKeKo
かきくけこ  カキクケコ

( rmhntsk  bpdzg )
( wawiwewo yayuyo )

vu  VaViVeVo
ゔ  ヷヸヹヺ

WA YAYUYO KAKE
ヮ ャュョ ヵヶ

n5*5+5"505 N6*6+6-6.6
んゝゞ゛゜ ンヽヾー・

*_ 々 u4edd 仝

-? ,_ ._ IS +"
〜 、 。   〃

<+>+ <'>' <">" (")" (')' (I)I
《》「 」『 』【 】 〔〕 〖〗

+_ ;_ 0_ =_
〄 〆 〇 〓

=T 〒 u3036 〶

== 注音 PHONETICS ==

b4p4m4f4d4t4n4l4    g4k4h4j4q4x4 zhchshr4  z4c4s4
ㄅㄆㄇㄈㄉㄊㄋㄌ    ㄍㄎㄏㄐㄑㄒ ㄓㄔㄕㄖ  ㄗㄘㄙ

a4o4e4aieiauou  anenaNeNer  i4u4iuv4nGgn
ㄚㄛㄜㄞㄟㄠㄡ  ㄢㄣㄤㄥㄦ  ㄧㄨㄩㄪㄫㄬ

== 拼音 PINYIN ==

1. a- ā ē ī ō ū
2. a' á é í ó ú
3. a< ǎ ě ǐ ǒ ǔ
4. a` à è ì ò ù

u01d6 ǖ u01d8 ǘ u01da ǚ u01dc ǜ
可通过<Ctrl-V>输入,也可在vimrc中定义digraphs:
" v- ǖ    v' ǘ    v< ǚ    v` ǜ
digraphs v- 470 v' 472 v< 474 v` 476

# 不常用:
e> ê    (ei)
z> ẑ    c> ĉ    s> ŝ    (zh,ch,sh)
ng ŋ    (ng)

= 版式 FORMAT =

:X ※    SE §
PI ¶    u204B ⁋
.. ‥    NS      BB ¦
Vs ␣    .M ·
'- ‾
Ca ‸
u25cc ◌

-N –    -M —
:3 ⋮    .3 ⋯

=2 ‗    !2 ‖


# Dagger:
/- †    /= ‡

?I ¿    !I ¡  u2E2E ⸮

# Ordinal Indicator:
-o º    -a ª

<< «    >> »    <1 ‹    >1 ›

# Quotation Mark:
'6'99'  "6"99"  .9:9
‘ ’ ‛   “ ” ‟   ‚ „

== 图形 GRAPHIC ==

0m0o0M0L0RSnIc  UTuTPRTrDtdTPLTl    sBSROrDbDwLZFdBd
○ ◎ ● ◐ ◑ ◘ ◙   ▲ △ ▶ ▷ ▼ ▽ ◀ ◁     ▪ ▬ ▭ ◆ ◇ ◊ ◢ ◣

# Block:
TBLBFBlBRB  .S:S?SfSOS  RORrRFRYRHRZRKRX
▀ ▄ █ ▌ ▐   ░ ▒ ▓ ■ □   ▢ ▣ ▤ ▥ ▦ ▧ ▨ ▩

# Box Drawing:
hhHHvvVV
─ ━ │ ┃
drdRDrDR dldLDlLD uruRUrUR uluLUlUL vrvRVrVR
┌ ┍ ┎ ┏  ┐ ┑ ┒ ┓  └ ┕ ┖ ┗  ┘ ┙ ┚ ┛  ├ ┝ ┠ ┣
vlvLVlVL dhdHDhDH uhuHUhUH vhvHVhVH
┤ ┥ ┨ ┫  ┬ ┯ ┰ ┳  ┴ ┷ ┸ ┻  ┼ ┿ ╂ ╋

FDBD
╱ ╲

3- ┄    4- ┈
3! ┆    4! ┊
3/ ┇    4/ ┋
3_ ┅    4_ ┉

# OCR SYMBOL

1h2h3h4h 1j2j3j4j
⑀ ⑂ ⑁ ⑃  ⑆ ⑇ ⑈ ⑉