arabic

arabic.txt 适用于 Vim 9.2 版本。 最近更新: 2025年10月 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 在支持双向显示 (Bidi) 能力的终端模拟器中启动 Vim 时,支持双向显示功能。 阿拉伯语字体 arabicfonts

Vim 要求使用等宽字体,现在已有很多此类字体可用。而阿拉伯语还要求具备 ISO-8859-6 以及 B-表现型 (Presentation Form-B) 的字体 (如果没有 B-型,阿拉伯语 支持 不可 用)。强烈推荐用户寻找所谓的 'ISO-10646-1' 字体。可在互联网上查找, 或者访问 www.arabeyes.org 以获取有关从何处获取所需阿拉伯语字体的更多信息。 字体安装

o 在 X Window 系统下安装字体 (Unix/Linux) 根据具体系统,将 阿拉伯 字体文件复制到用户选择的任一目录下。切换到该目录, 然后执行如下命令: % mkfontdir % xset +fp 阿拉伯_字体_目录_路径_名 使用方法

在 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 窗口的命令行里手工输入)。简单地说, 在 vimrc 文件里加上 ':set encoding=utf-8'。 不使用 UTF-8 时,试图使用阿拉伯语会得到以下警告消息, W17 Arabic 需要 UTF-8,请执行 ':set encoding=utf-8' o 启动阿拉伯语的设置 [快捷方式] 为了简化操作并实现流水线化处理,有两种方案: 其一是以下列方式启动 Vim: % vim -A 用户的_utf8_阿拉伯_文件 ... 其二是在 Vim 里执行如下命令: :set arabic 建议用户采取以上两种方式之一。未打开 'termbidi' 设置时,两者都会实际完成: 1. 设置相应的键盘映射 2. 允许删除单个组合字符对 3. 打开 rightleft 模式 (从右到左) 4. 打开 rightleftcmd 模式 (影响命令行) 5. 打开 arabicshape 模式 (字型重整) 也可在 .vimrc 文件里加上 ':set arabic'。 要关闭阿拉伯语支持: :set noarabic 会撤销上述启动命令所做的一切操作,但不修改全局设置,否则会影响到其他打开的 缓冲区。简单地说,'noarabic' 命令会: 1. 切换到原有的键盘映射 2. 禁止删除单个组合字符对 3. 关闭 rightleft 模式 注意: 'arabic' 命令会考虑到 'termbidi' 设置,以检测终端是否提供外部的双向显 示 (bidi) 支持 ("mlterm" 就是一例),'termbidi' (如果可用) 比从右到左 更优越,提供的功能更多,所以优先使用该支持。此时,'arabic' 设置只会设 置键盘映射而保持其他设置不变。 'termbidi' 打开时,为了分离竖向窗口,可用指示从左到右方向的垂直分割符 "l" 或 "𝖨"。通过修改其颜色为前景色,可隐藏此分割符: :set fillchars=vert:l :hi VertSplit ctermbg=White 注意 这只是临时方案,并非最终方案。 从另一方面说,如果更喜欢详细而明确的逐步操作,也未必非要使用 'arabic' 这种 快捷方式命令,以下是所需步骤 (换而言之,使用 ':set arabic' 时,以下内容可以 跳过不看) - + 激活阿拉伯语的键盘映射 要激活阿拉伯语的键盘映射 (也就是,将英语/拉丁语系键盘重新映射到相当于标 准阿拉伯语的键盘),可将 'keymap' 选项设置成 "arabic"。为此,在 Vim 窗口 中输入 :set keymap=arabic 也可在 .vimrc 文件里添加以上的 'keymap' 设置命令以得到相同效果。也就是 在 .vimrc 文件里加上 ':set keymap=arabic'。 要在缺省映射 (英语) 和阿拉伯语的键盘映射间切换,建议在插入 (包括添加/替 换) 模式下键入 'CTRL-^'。此时,在命令行上显示的插入模式提示会显示 "Arabic" 字符串,指示当前映射使用的键盘映射 (如,-- INSERT Arabic --)。 + 阿拉伯语的的删除组合字符对能力 Vim 缺省关闭 'delcombine' 选项。该选项允许删除 LAM_ALEF (LAA) (لَا / لا) 组合字符里的 ALEF (ا) 而保留 LAM (ل) (也就是说,将组合字符还原为原有两个 字符的形式 -- 这也适用于 harakat (元音符号) 及其组合字符形式)。要在 Vim 窗口里打开该选项 :set delcombine 也可在 .vimrc 文件里添加以上的 'delcombine' 设置命令以得到相同效果。也就 是在 .vimrc 文件里加上 ':set delcombine'。 + 阿拉伯语的从右到左模式 Vim 缺省以从左到右模式启动。'rightleft' 是改变窗口文本方向的命令 - 可用 以下方式之一设置, - 用 `:set rightleft` 和 `:set norightleft` 在从左到右和从右到左模式间切 换。 - 可简化为 `:set rl` ('rl' 是 rightleft 的缩写)。 - 在 .vimrc 文件里添加 `:set rl`,即可始终以从右到左模式启动 Vim。 + 阿拉伯语的从右到左命令行模式 有些命令可以在从右到左的模式下完成编辑。目前,仅适用于搜索命令。 这由 'rightleftcmd' 选项控制。缺省值为 "search",也就是说,'rightleft' 打开的窗口里会以从右到左的模式编辑搜索命令。要关闭该行为, :set rightleftcmd= 要重新打开搜索命令编辑的从右到左模式, :set rightleftcmd& + 阿拉伯语的字型重整模式 要激活阿拉伯语所需的字型替换 (重整、组合,合并),可打开 'arabicshape' 命 令。可在 Vim 窗口里设置 :set arabicshape 也可在 .vimrc 文件里添加以上的 'arabicshape' 设置命令以得到相同效果。也 就是在 .vimrc 文件里加上 ':set arabicshape'。 键盘映射/键盘 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: