vim特殊字符输入及整理 (2)

2012年5月11日 19:15

%% 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命令和字符。

Tags: vim
评论(1) 阅读(6314)

vim特殊字符输入和整理

2012年1月15日 14:04

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
⑀ ⑂ ⑁ ⑃  ⑆ ⑇ ⑈ ⑉

Tags: digraphs vim special character
评论(2) 阅读(20029)

easydigraph.vim 让输入特殊字符更加轻松

2012年1月15日 11:28

这是一个方便输入特殊字符的vim插件。

vim自带的:digraphs命令可以很方便的来输入特殊字符,

但是每次输入都需要按键,

这个插件则可以转化{motion}范围内的字母到特殊字符。

下载地址:
vim.org: http://www.vim.org/scripts/script.php?script_id=3882
 github: https://github.com/Rykka/easydigraph.vim/downloads

vim digraph特殊字符整理 一文整理了大部分常用的特殊字符,可供参考。

Update:

0.2: 增加了可视模式下的快捷键。
0.3: 支持所有{motion}。


简介如下:

    *EasyDigraph* 使得输入特殊字符更加轻松(+digraphs)。
   
    使用|:digraphs|,你可以用i_<Ctrl-K>来输入特殊字符。
    但是每次输入都需要按键。
    用EasyDigraph,你可以使用快捷键加上{motion}来转换特殊字符。

    普通模式下默认映射为'<leader>bb'
    可以使用|g:EasyDigraph_nmap|重新定义。
   
    例如:
    <leader>bbaW 转化 'a*b*c*d*e*' 为 希腊文 'αβξδε'
    <leader>bb2w 转化 'o5hayou5 gozai5masu' 为 平假名 'おはよう ございます'
    <leader>bbi{ 转化 '{(S8S+S3SnS)S}' 为 SuperScript {⁽⁸⁺³ⁿ⁾}'
    <leader>bbit 转化 '<p>\n3S >* \n2S </p>' 为 '<p>n³≫ n² </p>'

    EasyDigraph将自动忽略转化过的字符,
    即只会转化ASCII 33~126之间的字符。
    即,在 'αβξδε' 上按键将不会使其产生变化。

    并且当转化时,vim digraph将忽略 '\' 以及其后的字符,
    即 '\1\+\2' 将变为 '1+2'
    唯一的例外是 '/'。(至 vim7.3)
   
    一个插入模式下的快捷键,改变当前的WORD。
    默认映射为'<c-x><c-b>'
    可以使用|g:EasyDigraph_imap|重新定义
   
    一个可视模式下的快捷键,改变当前的高亮区域。
    默认映射为'<c-b>'
    可以使用|g:EasyDigraph_vmap|重新定义

    查看 |:digraph| 和 |digraphs-default| 以了解更多。

    有问题请到发布到 https://github.com/Rykka/easydigraph.vim/


    已知问题:
        1. 多行转换可能会造成第一行错位。
        2. 多行转换,有时返回的字符串会和原字符串混淆

 

Tags: vim
评论(0) 阅读(4101)

vim tips

2011年12月03日 11:26

1.delimiter in :s :g :v  Tip 406
 :s+/usr+/usr/local+
 :s#/usr#/usr/local#

代替:s/\/usr/\/usr\/local/

2.range in :s :g :v Tip 1611

可以用search

:/this/,/that/s/this/that/

‘;’会在运行中将cursor移动过去,而‘,’不会移动cursor

:1,+1 与:1;+1

3. 给当前文件加入行号

:%s/^/\=line('.').' '/

如果要使行号整齐,

可以用

:%s/^/\=line('.')."\t"/

或者

:%s/^/\=printf("% 4d ",line('.'))/ 

4. string "" 和 literal string ''

string里的"\"和'"'需要用"\"转义,

literal string 里的 "'"需要 用 "''"转义

"\"" == '"'

"\\" == '\'

"'"  == ''''

在literal string里可以用 <Ctrl-Q>{press} 来输入特殊字符

与 "\<press>" 相同

即 "\<C-W>" 与 '' 里直接输入的特殊字符相同。

 

5. '[[:graph:]]' 和 '[!-~]' 和 '[\d33-\d126]' 等价

可以通过这个脚本来验证

for i in range(3,226)
    let oi = printf("%o",i)
    exe "let oi = " . "\"\\". oi . "\""
    echo i ':' oi oi =~ '[[:graph:]]' oi =~ '[!-~]' oi =~ '[\d33-\d126]'
endfor


6. 使用regiser重复相似的工作。

let @a = "$"
let @b = "la\<c-r>a\<esc>"
let @c = "20@b"

那么在source了这段脚本后,'@c' 则会重复20次插入@a的字符 '$'

要改变插入字符,只需要改变@a

更深入的话,可以插入表达式

比如'@c'给每行插入行号


let @a = "printf('% 4d ',line('.'))"
let @b = "I\<c-r>=\<c-r>a\<CR>\<esc>j"
let @c = "gg999@b"


 

 

 

 

 

 

Tags: vim
评论(1) 阅读(4054)

lastbuf.vim 撤销最后关闭的buffer

2011年12月02日 00:31

这是之前的一篇文章 vim:撤销最后关闭的buffer 的后续。

因为依云同学表示那个小脚本还有很大提升空间,

于是我就把它改成了小插件并上传到了vim.org 和github.com

https://github.com/Rykka/lastbuf.vim

 

功能:


重新打开最后关闭的buffer

:hid 所关闭的buffer始终可以重新打开

:e # :only :q :close :bun :bd 所关闭的buffer默认可以重新打开

:bd 所关闭的buffer默认不会重新打开

:bw 所关闭的buffer 始终不会打开

NOTE: 关闭的buffer如果仍有窗口在编辑,将不会重新打开。
 

基本命令:

  :LastBuf 或 <c-w><c-z>

打开刚才关闭的buffer。

可以用 map <c-s-t> :LastBuf<CR> 来重新mapping

 

设置:


全局变量 g:lastbuf_num ,最大撤销数量

let g:lastbuf_num=20


全局变量 g:lastbuf_seekall,是否始终打开unloaded buffer。

如果不需要打开unloaded buffer。将其设成0并 set nohidden

let g:lastbuf_seekall=1

 

全局变量 g:lastbuf_level,决定重新打开buffer的层级。

" :hid   bufhidden  (始终会重新打开)
" :bun   bufunload  (重新打开如果 level >= 1)
" :bd    bufdelete  (重新打开如果 level >= 2)
" :bw    bufwipeout (绝对不会重新打开!)
" 默认为 1 .即:bd 和:bw关闭的不会重新打开
" 如果想要和 'nohidden'一样的效果
" 设为 0 并且 set nohidden

let g:lastbuf_level=1

 

 

 

Tags: vim
评论(2) 阅读(3641)

ArchLinux下编译gvim +python

2011年12月01日 21:26

ArchLinux的gvim版本比较新,
但是其python2的library链接有错。
当import gtk就会出现Error import的错误提示。

这个错误我知道已经有好几个月了,
之前在github上就有用ArchLinux的人表示用不了我插件里的取色器。
但是当时我用的还是Ubuntu,所以没去fix。

不过如今我用上了Arch,当然得解决这个问题:D

方法很简单,重新编译gvim:

hg clone https://vim.googlecode.com/hg/ vim

cd vim/src
./configure --enable-multibyte --with-features=huge --enable-gui=gtk2 \
  --enable-python3interp=yes --enable-rubyinterp \
  --enable-pythoninterp=yes \
  --enable-tclinterp  --enable-fontset  \
  --with-python-config-dir=/usr/lib/python2.7/config \
  --with-python3-config-dir=/usr/lib/python3.2/config-3.2mu

make && sudo make install


NOTE:
1.要将python2 link 为 python,否则会提示找不到python2.x
在/usr/bin下
    ln -s python2 python
PS:安装好后可以用 ln -sf python3 python 把它替换回来


2.--with-python3-config-dir为/usr/lib/python3.2/config-3.2mu

3.如果还是找不到python2,可以在 auto/config.cache里找到
vi_cv_var_python_version并将此行改成
vi_cv_var_python_version=${vi_cv_var_python_version=2.7}

 

PS: 看了下gvim的PKGBUILD。里面有这么一句

  # fix python name
  sed -i -e 's|vi_cv_path_python, python|vi_cv_path_python, python2|' \
    vim-build/src/configure.in

那改这句应该也行。

也就是在configure.in里面把

vi_cv_path_python, python 改成 vi_cv_path_python, python2

Tags: vim
评论(4) 阅读(7839)

vim:撤销最后关闭的buffer

2011年12月01日 02:55


在目前的主流浏览器里面,都可以撤销最后关闭的标签页。

于是我以为vim里面也有这样的功能,但是看完:help buffer后发现,这个真没有 :|

于是只好自己动手,写了个mapping

<ctrl-w>z:撤销最后关闭的buffer
 

"reopen last closed buffers "{{{
"exclude the buffer closed with :bw :qall :)
aug BufList
    au!
    au vimenter * let g:bufList=[]
    au bufwinleave * call AddBufList()
aug END
nmap <silent> <c-w>z :call OpenBufList()<cr>
nmap <silent> <c-w><c-z> <c-w>z
function! AddBufList()
    let b=expand('<abuf>')
    if b > 0
        let g:bufList=add(g:bufList,b)
    endif
endfunction
function! OpenBufList()
    if len(g:bufList) !=0
        exec "sb ".remove(g:bufList,-1)
    endif
endfunction "}}}





可以撤销:q :hid :close :only :bun :bd所关闭的buffer('hidden'选项没影响)

不会撤销 :bw :qall 所关闭的buffer

我猜也不需要撤销了吧,嗯……

 



NOTE:

1.<afile>是当前autocommand执行的对象,<abuf>是其buf number。不一定与“%”相同

还有一个<amatch>,看说明是指 filetype/syntax 的events时所匹配的filetype/syntax的名称

2.buffer events的执行顺序 ,'[]'括号内为'hidden'选项打开的情况。


:new => bufleave

:hid => bufleave -> bufwinleave -> bufhidden
(与:e #相同,'hidden'打开时:q,:close与之相同)

:bun => bufleave -> bufwinleave ->[bufhidden ->]bufunload
('hidden'关闭时:q,:close与之相同)

:bd  => bufleave -> bufwinleave ->[bufhidden ->]bufunload -> bufdelete

:bw  => bufleave -> bufwinleave ->[bufhidden ->]bufunload -> bufdelete
                 -> bufwipeout
                (!这里的buffer不能被恢复了)

 

 

Tags: vim
评论(6) 阅读(7505)

vim colorscheme: galaxy1.0 发布~

2011年9月05日 00:24

 

 

都是英文,改天再翻译,总之,就是个根据色彩自动生成主题的插件。支持Terminal(8/16/256)

Terminal curosr 部分感谢 依云同学的 改变终端下的光标颜色,包括 screen 和 tmux!

galaxy 在  http://www.vim.org/scripts/script.php?script_id=3729 下载

需要安装 ColorV http://www.vim.org/scripts/script.php?script_id=3597  

 

内置主题预览:

        GUI        


        TERM(256)  

 

 

##INTRO##

    *galaxy* is a colorscheme that generate schemes with colors.

    With this you can:
        Simply get your desired colorscheme.

    With this you get:
        5 built-in schemes.
        Generate scheme with only one color.
        Edit schemes in 5 colors.
        Simply generate 100+ schemes with colorname-list.
        Terminal (256/16/8) support with all schemes.
        StatusLine highlight with insert-enter.
        Clearly diff mode color.
        ...

    Take a glance:
        GUI         http://i55.tinypic.com/u0qh2.png
        TERM(256)   http://i56.tinypic.com/2nr234y.png

    Where to start:     
        :colorscheme galaxy
        :Galaxy

##INSTALL##

1.Using [Vundle.vim](Recommend):~
    https://github.com/gmarik/vundle
    After installed vundle and git. Add this line to your vimrc  
    `Bundle 'Rykka/vim-galaxy'`
    `Bundle 'Rykka/ColorV'`
    Run `:BundleInstall` to install.
    And update them easily by `:BundleInstall!`
 
2.Using [Galaxy on Vim.org]~
    You should download latest 'ColorV' at first.
    http://www.vim.org/scripts/script.php?script_id=3597
    http://www.vim.org/scripts/script.php?script_id=3729
    Download the latest version of tar.gz file,
    Extract to $VIMFILE folder.
    ("~/.vim" for linux. "$HOME/vimfiles" for windows)
    Generate helptags. `:helptags ~/.vim/doc
 

Tags: vim
评论(0) 阅读(6241)

vim 插件 ColorV 2.5发布~

2011年8月31日 15:14

这是我的一个vim插件,方便在vim中直接处理色彩文本(e.g.,yellow/rgb(255,255,0)/#ff3300)。

功能简述:
        选择颜色
        获取色彩信息
        改变色彩文本
        生成色彩列表
        预览色彩文本
 

最新版可以从 https://github.com/rykka/ColorV 下载


2.5版本的新特性

1. 采用了python 对核心程序重写.改变了原先的算法。

使运行速度得到极大提升

(gui <0.06s term<0.10s 对比之前的数据 gui~0.4s term~1.1s )

 

2. 增加了新的max模式 ('<leader>cx')。

显示更多的色彩信息(RGB/HSV/HLS/YIQ)

一个色彩历史条,记录曾经复制过的色彩。

 

3.新的色彩空间

增加了一个HLS空间的显示 。"g:ColorV_win_space" 。

不过感觉用'hls'空间里面选择色彩并不比'hsv'方便。

 

4.终端支持(感谢依云同学)

添加了对彩色终端的支持。包括8/16/256色。

需要注意设置‘&t_Co’选项

 

附图

(左边是terminal 右边是gui。

其主题色彩是根据在colorv中所显示的色彩自动生成的。

生成器是我的另外一个插件vim-galaxy ,不过还没正式发布,哈哈)

 

 

 

 

 

 

 

 

 

 

 

 

 

Tags: vim
评论(0) 阅读(3787)

vim两种算法的终端颜色对比

2011年8月01日 21:15

上面是终端色图

左边delta_e_cie2000,右边是rgb差值

下面为标准色图

可看出,其差别主要是在饱和度和亮度较低(<40)时,rgb算法就丢失了色彩信息

而delta_e_cie2000在(<25)左右丢失

总体上delta_e_cie2000比rgb更鲜艳。

不过就识别度而言,两者都差不多。

用rgb差值还是能够接受的

Tags: vim
评论(0) 阅读(4237)