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('⊖') " Euler 常数 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: