ft_raku

ft_raku.txt Raku 程序语言文件类型 vim-raku Vim-raku 提供 Raku 程序的语法高亮、缩进和其他支持。 1. 在 Raku 文件里使用 Unicode raku-unicode

1. 在 Raku 文件里使用 Unicode raku-unicode

用 Unicode 符号定义新操作符可显著提升 Raku 程序的可读性。参见: https://perl6advent.wordpress.com/2012/12/18/day-18-formulas-resistance-is-futile/ 虽然 Raku 为部分常见操作符提供了 ASCII 版本 (见 https://docs.raku.org/language/unicode_ascii),但直接使用完整的 Unicode 操作符 范围通常更为理想。操作系统可能自带输入方法,但建议优先使用 Vim 的内建功能。 Vim 中,输入这些符号的便捷方式是使用二合字母 (:help digraphs-use )。很多常用 符号已有定义。键入 :digraphs 可查看完整列表。一个方便的方法是保存二合字母列 表到文件。可在外壳上运行: vim +'redir >/tmp/vim-digraphs-listing.txt' +digraphs +'redir END' +q 以下为部分常用的 Vim 二合字母: << « /0 ∅ !< ≮ >> » Ob ∘ !> ≯ ., … 00 ∞ (C ⊂ (U ∩ -: ÷ )C ⊃ )U ∪ (_ ⊆ >= ≥ ?= ≅ )_ ⊇ =< ≤ (- ∈ ?= ≅ != ≠ -) ∋ ?- ≃ 希腊字母可通过 '*' 加对应拉丁符号输入: *p π *t τ *X × 上下标数字可通过 's' 和 'S' 输入: 0s ₀ 0S ⁰ 1s ₁ 1S ¹ 2s ₂ 9S ⁹ 有些符号没有缺省定义。可在 ~/.vimrc 文件里加入新二合字母的定义。 exec 'digraph \\ ' .. char2nr('∖') exec 'digraph \< ' .. char2nr('≼') exec 'digraph \> ' .. char2nr('≽') exec 'digraph (L ' .. char2nr('⊈') exec 'digraph )L ' .. char2nr('⊉') exec 'digraph (/ ' .. char2nr('⊄') exec 'digraph )/ ' .. char2nr('⊅') exec 'digraph )/ ' .. char2nr('⊅') exec 'digraph U+ ' .. char2nr('⊎') exec 'digraph 0- ' .. char2nr('⊖') " 欧拉常数 exec 'digraph ne ' .. char2nr('𝑒') " Raku 的原子操作标记 exec 'digraph @@ ' .. char2nr('⚛') 另一种方案是在插入模式下使用缩写,把 ASCII 操作符自动替换为对应的 Unicode 等价 单字符符号。 iabbrev <buffer> !(<) ⊄ iabbrev <buffer> !(<=) ⊈ iabbrev <buffer> !(>) ⊅ iabbrev <buffer> !(>=) ⊉ iabbrev <buffer> !(cont) ∌ iabbrev <buffer> !(elem) ∉ iabbrev <buffer> != ≠ iabbrev <buffer> (&) ∩ iabbrev <buffer> (+) ⊎ iabbrev <buffer> (-) ∖ iabbrev <buffer> (.) ⊍ iabbrev <buffer> (<) ⊂ iabbrev <buffer> (<+) ≼ iabbrev <buffer> (<=) ⊆ iabbrev <buffer> (>) ⊃ iabbrev <buffer> (>+) ≽ iabbrev <buffer> (>=) ⊇ iabbrev <buffer> (\|) ∪ iabbrev <buffer> (^) ⊖ iabbrev <buffer> (atomic) ⚛ iabbrev <buffer> (cont) ∋ iabbrev <buffer> (elem) ∈ iabbrev <buffer> * × iabbrev <buffer> **0 ⁰ iabbrev <buffer> **1 ¹ iabbrev <buffer> **2 ² iabbrev <buffer> **3 ³ iabbrev <buffer> **4 ⁴ iabbrev <buffer> **5 ⁵ iabbrev <buffer> **6 ⁶ iabbrev <buffer> **7 ⁷ iabbrev <buffer> **8 ⁸ iabbrev <buffer> **9 ⁹ iabbrev <buffer> ... … iabbrev <buffer> / ÷ iabbrev <buffer> << « iabbrev <buffer> <<[=]<< «=« iabbrev <buffer> <<[=]>> «=» iabbrev <buffer> <= ≤ iabbrev <buffer> =~= ≅ iabbrev <buffer> >= ≥ iabbrev <buffer> >> » iabbrev <buffer> >>[=]<< »=« iabbrev <buffer> >>[=]>> »=» iabbrev <buffer> Inf ∞ iabbrev <buffer> atomic-add-fetch ⚛+= iabbrev <buffer> atomic-assign ⚛= iabbrev <buffer> atomic-fetch ⚛ iabbrev <buffer> atomic-dec-fetch --⚛ iabbrev <buffer> atomic-fetch-dec ⚛-- iabbrev <buffer> atomic-fetch-inc ⚛++ iabbrev <buffer> atomic-inc-fetch ++⚛ iabbrev <buffer> atomic-sub-fetch ⚛−= iabbrev <buffer> e 𝑒 iabbrev <buffer> o ∘ iabbrev <buffer> pi π iabbrev <buffer> set() ∅ iabbrev <buffer> tau τ vim:tw=78:ts=8:noet:ft=help:norl: