vim 视频 Riv:QuickStart
2012年10月19日 15:11
When we using the '<Space>' as a mapleader in vim.
The disadvantage is you can not see it with 'showcmd' ,
it's a whitespace!
This will lead to some unwanted behavior as
you don't know whether you have pressed it or not.
So I write a small function in vimrc to show it.
" using expr to return a map , which can autoload plugin files map <expr><Space> <SID>fake_leader() fun! s:fake_leader() "{{{ " A fake leader to display the status of <Space>. " you should set your mapleader to a key other than '<Space>' " disadvantage: only recevie 2 key mapping " e.g. <leader>vv but no <leader>v or <leader>vvv echohl WarningMsg | echo "F:<Space>+" | echohl Normal let n1 = getchar() let c1 = nr2char(n1) let t="" if c1 == "\<Space>" echon "<Space>" let t = g:mapleader . g:mapleader elseif c1 == "\<Esc>" echon "<Escape>" elseif c1 == "\\" echon "<Bslash>" let t = g:mapleader . "\\" elseif n1 == "\<BS>" echon "<BS>" else echon c1 let c2 = nr2char(getchar()) let t = g:mapleader .c1.c2 endif redraw | echo return t endfun "}}}
因为gnome-shell 老是出现奇怪的登录时freeze现象,
而ubuntu的unity的firefox拖拽链接和图片也存在freeze现象。(https://bugs.launchpad.net/unity/+bug/773382)
果断Arch卸载gnome-shell,转用awesome。
登陆成功,感觉良好。
我的awesome设置。
https://github.com/Rykka/awesome
主要改动是增加了自定义快捷键,定制了wibox的widgets和menu项。
同时也改动了easystroke的快捷键以适合awesome的设置。
%% Created:2012-05-10
%% Updated:2012-05-12
在前篇中我主要介绍了在vim中通过digraph输入特殊字符。
但是实际应用中,我发现这个方法并不是特别好。
因为要通过两个字母定义相应的字符,由于其定义的字符范围覆盖太广,
使其并不特别容易记忆,很可能出现错误输入。主要问题集中在数学符号。
因此我决定使用keymap来进行输入这些特殊字符,
因为keymap可以用多个字符来定义一个特殊字符。
基于Vim-LaTex suite和vim.org的math.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命令和字符。
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 ⑀ ⑂ ⑁ ⑃ ⑆ ⑇ ⑈ ⑉
这是一个方便输入特殊字符的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. 多行转换,有时返回的字符串会和原字符串混淆
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"
这是之前的一篇文章 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