arabic.txt 适用于 Vim 9.0 版本。 最近更新: 2022年7月
VIM 参考手册 by Nadim Shaikli
译者
: Willis
Vim 的阿拉伯语支持 (选项和映射) Arabic
E800
为了使用从右到左和阿拉伯语的映射支持,需要编译 Vim 时加入 +arabic 特性。
这些功能由 Nadim Shaikli <nadim-at-arabeyes.org> 编写。
本文件最好在 Vim 的 GUI 版本里用以下设置阅读:
:set encoding=utf-8
:set arabicshape
简介
阿拉伯语是一个需要多项特殊特性的要求很高的语言。字符是从右到左导向的,应该在屏
幕上从右到左的显示。阿拉伯语也要求字型重整: 相同的字符出现在词的不同相对位置
(开头,中间,结尾,或者单独出现) 时有不同的字型。阿拉伯语也要求两种不同的组合
形式和在一些情况下,把多达两个的字符附加在 (superimpose) 别的字符上的能力 (合
成) 或者实际把两个字符替代成一个 (组合) 的能力。最后,要正确地显示阿拉伯语,需
要 ISO-8859-6 (U+0600-U+06FF) 字体和 B-表现型 (U+FE70-U+FEFF) 字体,两者都是
所谓的 ISO-10646-1 字体的一部分。
命令、提示和帮助文件不是用阿拉伯语书写的,以使用户界面保持和标准 Vi 的界面一
致。
特色
o 就像原有的 Vim 一样,编辑从左到右的文件。
o 和从右到左两种模式下同时察看同一个文件。(这有助于编辑混合两种文字的文件)。
o 不需要终端对从右到左能力的特别支持。这项改动完全独立于硬件。只需要阿拉伯语
的字体。
o 和原有的 Vim 兼容。几乎所有的功能都支持从右到左的模式 (除了一些漏洞以外)。
o 单个命令就可以改变键盘映射和反向插入模式。
o 从反向的插入模式退回到文件里正确的位置 (如果可能的话)。
o 单个命令可以切换完全的阿拉伯语支持。
o 在阿拉伯语模式,数字的输入是从左到右的。在输入一个非数字的字符时,它会插在
最后一个数字的左面。
o 在命令行的反向插入模式里,提供阿拉伯语的映射。
o 如果 Vim 在一个有双向显示 (Bidi) 能力的终端模拟器中启动,那么可能有一定的双
向显示能力。
阿拉伯语字体 arabicfonts
Vim 要求等宽字体,这已经有很多了。阿拉伯语要求有 ISO-8859-6 和 B-表现型
(Presentation Form-B) 字体 (没有 B-型,阿拉伯语支持是 不能
用的)。强烈推荐用户
寻找所谓的 'ISO-10646-1' 字体。在因特网上找找看,或者查看 www.arabeyes.org,了
解更多关于哪里可以得到所需的阿拉伯字体的信息。
字体安装
o 在 X Window 系统下 (Unix/Linux) 安装字体
根据你的系统,把你的 阿拉伯
字体文件复制到你选择的一个目录下。转到这个目
录,然后执行如下命令:
% mkfontdir
% xset +fp path_name_of_arabic_fonts_directory
使用方法
在实际在 Vim 使用阿拉伯语之前,要考虑到并完成一些设置。
o 设置阿拉伯字体
+ 对于 Vim GUI 而言,把 'guifont' 设成你的 阿拉伯
字体。这是通过在 Vim 窗
口输入以下命令完成的。
:set guifont=你的_阿拉伯_字体
注意
: 字符串 '你的 阿拉伯
字体' 应该用一个完整的 linux/unix 系统下的字体
名字来代替 (比如,
-misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1)。
你可以在 .vimrc 文件里加上 'guifont' 的设置命令以得到相同的结果。换句话
说,在你的 .vimrc 文件里加上 ':set guifont=你的 阿拉伯
字体'。
+ 在 X Window 环境上,你也可以在启动 Vim 时加上 '-fn 你的 阿拉伯
字体' 选
项。
o 设置合适的编码
要打开正确的阿拉伯语设置,下面的命令:
:set encoding=utf-8
应该加在你的 .vimrc 文件里 (最好不要在 Vim 窗口的命令行里手工输入)。简单的
说,把 ':set encoding=utf-8' 加到你的 '.vimrc' 文件里。
试图在没有 UTF-8 的时候使用阿拉伯语会得到以下的警告
消息,
W17
Arabic requires UTF-8, do ':set encoding=utf-8'
o 进入阿拉伯语的设置 [快捷方式]
为了把事情简化和流水线化,你可以有两种方案: 或者如下启动 Vim:
% vim -A my_utf8_arabic_file ...
或者在 Vim 里执行如下的命令:
:set arabic
建议用户采取这两种可能的激活方式。在没有打开 'termbidi' 设置的情况下,两者
都:
1. 设置相应的键盘映射
2. 允许删除一个单独的组合字符对
3. 打开从右到左模式
4. 打开从右到左的命令行模式 (影响命令行)
5. 打开阿拉伯字型重整模式 (进行字型的替换)
你也可以在 .vimrc 文件里这么做,只要增加这一行 ':set arabic' 就行了。
你也可以用如下方式关闭阿拉伯语的支持:
:set noarabic
它会关闭上条打开命令所做的一切,而不影响全局设置,从而也就不影响别的打开的
缓冲区。简单地说,'noarabic' 命令:
1. 关闭替换了的键盘映射
2. 关闭删除单独的组合字符对的功能
3. 关闭从右到左模式
注意
: 如果终端提供了外部的双向显示 (bidi) 支持 ("mlterm" 就是一个例子),
'arabic' 命令会考虑到 'termbidi' 设置。因为双向显示比从右到左更好,提
供的功能更多,如果置位,我们优先使用此设置。这时,'arabic' 只修改键盘
映射。
为了分离竖向窗口,置位 'termbidi' 时会使用 LTR 垂直分割符 "l" 或
"𝖨"。可通过修改其颜色为前景色来隐藏此分割符:
:set fillchars=vert:l
:hi VertSplit ctermbg=White
注意
这只是临时方案,并非最终方案。
从另一方面说,如果你喜欢详细而具体的操作,你可以不用 'arabic' 的快捷方式命
令,这里是你需要做的 (换而言之,如果你用 ':set arabic' 就可以不用看了) -
+ 阿拉伯语的键盘映射激活
要激活阿拉伯语的键盘映射 (也即,重新映射你的英语/拉丁语系键盘到一个类似
于标准阿拉伯语的键盘),把 'keymap' 命令设置成 "arabic"。这可以由在你的
Vim 窗口中输入以下命令完成。
:set keymap=arabic
你可以把 'keymap' 设置命令加到你的 .vimrc 文件里。也就是说,把
':set keymap=arabic' 加到你的 .vimrc 文件里。
要在你的缺省映射 (英语) 和阿拉伯语的键盘映射间切换,用户最好在插入 (或
者加入/替换) 模式下按 'CTRL-^
'。命令行下会在插入模式后面提示当前映射为阿
拉伯状态 (例如,-- INSERT Arabic --)。
+ 阿拉伯语的组合字符对的删除
缺省时,Vim 关闭 'delcombine' 选项。这个选项允许删除 LAM_ALEF (LAA) 组合
字符里的 ALEF,但还保留那个 LAM (也就是说,把组合字符恢复到原来的两个字
符的形式 -- 这也适用于 harakat 和他们的组合形式)。你可以在你的 Vim 窗口
下打开这个选项
:set delcombine
你可以把 'delcombine' 设置命令加到你的 .vimrc 文件里。也就是说,把
':set delcombine' 加到你的 .vimrc 文件里。
+ 阿拉伯语的从右到左模式
缺省时,Vim 以从左到右模式启动。'rightleft' 是改变窗口朝向的命令 - 有如
下的设置方式,
- 在从左到右和从右到左模式间切换可以用 ':set rightleft' 和
':set norightleft'。
- 在从左到右模式时,在命令行里输入 ':set rl' ('rl' 是 rightleft 的缩
写)。
- 把 ':set rl' 一行放到你的 '.vimrc' 文件里,就可以一劳永逸的以从右到左
模式启动 Vim。
+ 阿拉伯语的从右到左的命令行模式
有些命令的编辑可以在从右到左的模式下完成。目前,这只对搜索命令适用。
控制这点的是 'rightleftcmd' 选项。缺省的是 "search",也就是说在置位了
'rightleft' 的窗口里会以从右到左的模式编辑搜索命令。要关闭它,
:set rightleftcmd=
要重新打开从右到左方式对搜索命令进行编辑,
:set rightleftcmd&
+ 阿拉伯语的字型重整模式
要激活阿拉伯语所需的字型替换 (重整、合成、组合),打开 'arabicshape' 命
令。这可以通过在我们的 Vim 窗口下执行
:set arabicshape
你可以把 'arabicshape' 设置命令加到你的 .vimrc 文件里。也就是说,把
':set arabicshape' 加到你的 .vimrc 文件里。
键盘映射/键盘 arabickeymap
Vim 的字符/字母编码是标准的 UTF-8。我不希望你用任何别的编码形式。
注意
: UTF-8 是一个包罗万象的编码,因此也是阿拉伯语唯一支持 (和鼓励使用) 的编码
(不鼓励并反对用任何别的私有编码)。
o 键盘
+ 插入/替换模式下的 CTRL-^
切换阿拉伯语/拉丁语系模式。
+ 键盘映射基于 Microsoft 的键盘映射表 (阿拉伯世界的实际标准):
+---------------------------------------------------------------------+
|! |@ |# |$ |% |^ |& |* |( |) |_ |+ || |~ ّ |
|1 ١ |2 ٢ |3 ٣ |4 ٤ |5 ٥ |6 ٦ |7 ٧ |8 ٨ |9 ٩ |0 ٠ |- |= |\ |` ذ |
+---------------------------------------------------------------------+
|Q َ |W ً |E ُ |R ٌ |T لإ |Y إ |U ` |I ÷ |O x |P ؛ |{ < |} > |
|q ض |w ص |e ث |r ق |t ف |y غ |u ع |i ه |o خ |p ح |[ ج |] د |
+-----------------------------------------------------------+
|A ِ |S ٍ |D [ |F ] |G لأ |H أ |J ـ |K ، |L / |: |" |
|a ش |s س |d ي |f ب |g ل |h ا |j ت |k ن |l م |; ك |' ط |
+------------------------------------------------------+
|Z ~ |X ْ |C { |V } |B لآ |N آ |M ' |< , |> . |? ؟ |
|z ئ |x ء |c ؤ |v ر |b لا |n ى |m ة |, و |. ز |/ ظ |
+-------------------------------------------------+
限制
o Vim 的 GUI 形式目前不支持双向显示 (也就是,能在一行里同时看到阿拉伯语和拉丁
语系的混合文字)。
已知漏洞
有一个已知的小漏洞:
1. 如果你在一个 LAM (U+0644) 之后插入一个 haraka (例如,Fatha (U+064E)),然后
再插入一个 ALEF (U+0627),期望的组合不会发生,因为夹在中间的 haraka 产生了
一些 不
会正确显示的东西。
临时解决方法: 不要在 LAM 和 ALEF 组合之间插入 harakat。基本上,不要期望看
到 harakat 和 LAM+ALEF 组合的字符的正确显示 (即使是它们之后
的字符也有问题)。这个问题纯粹是显示上的,在文件里存储的内容
包含所有的信息/编码,无一遗漏。
现在还不知道别的漏洞。
vim:tw=78:ts=8:noet:ft=help:norl: