阿拉伯语

Nvim :help 页面,生成来源 使用 tree-sitter-vimdoc 解析器。


阿拉伯语语言支持(Vim 的选项和映射)
这些功能由 Nadim Shaikli <nadim-at-arabeyes.org> 创建。
最好在 VIM 的 GUI 中使用以下设置查看此文件
:set encoding=utf-8
:set arabicshape

简介

阿拉伯语是一种要求很高的语言,需要许多特殊功能。字符是右到左方向的,应该在屏幕上以这种方式显示(即从右到左)。阿拉伯语还需要对其字符进行整形,这意味着同一个字符在单词中的不同位置(首字母、中字母、尾字母或独立字符)具有不同的视觉形式。阿拉伯语还需要两种不同的组合形式,以及在某些情况下,将多达两个字符叠加在另一个字符之上(组合)或将两个字符实际替换为一个字符(合并)的能力。最后,要正确显示阿拉伯语,不仅需要 ISO-8859-6 (U+0600-U+06FF) 字体,还需要 Presentation Form-B (U+FE70-U+FEFF) 字体,这两者都是所谓的 ISO-10646-1 字体的一部分。
命令、提示和帮助文件不是阿拉伯语,因此用户界面仍然是标准的 Vi 界面。

亮点

o 与原始 Vim 中一样,从左到右编辑文件没有变化。
o 在右到左的窗口中查看和编辑文件。文件方向是每个窗口的,因此可以同时在右到左和左到右模式下查看同一个文件。
o 不需要具有右到左功能的特殊终端。右到左更改完全独立于硬件。只需要阿拉伯语字体。
o 与原始 Vim 兼容。几乎所有功能都可以在右到左模式下工作(可能会存在错误)。
o 使用单个命令更改键盘映射和反向插入模式。
o 使用单个命令切换完整的阿拉伯语支持。
o 在阿拉伯语模式下,数字从左到右输入。输入非数字字符后,该字符将被插入到最后一个数字的左侧。
o 在反向插入模式下,命令行上的阿拉伯语键盘映射。
o 如果 Vim 在支持 Bidi 的终端模拟器中启动,则可以实现正确的双向功能。

阿拉伯语字体 arabicfonts

Vim 需要等宽字体,有很多这样的字体。阿拉伯语需要 ISO-8859-6 以及 Presentation Form-B 字体(没有 Form-B,阿拉伯语将_无法_使用)。强烈建议用户搜索所谓的“ISO-10646-1”字体。在互联网上搜索或查看 www.arabeyes.org 获取有关如何获取所需阿拉伯语字体的更多信息。

字体安装

o 为 X 窗口系统(Unix/Linux)安装字体
根据您的系统,将您的_ARABIC_FONT 文件复制到您选择的目录中。切换到包含阿拉伯语字体的目录,并执行以下命令
% mkfontdir % xset +fp 阿拉伯语字体目录路径名

使用

在 Vim 中实际使用阿拉伯语之前,需要考虑并调用一些设置。
o 设置阿拉伯语字体
+ 对于 Vim GUI,将 'guifont' 设置为您的_ARABIC_FONT。这可以通过在 Vim 窗口中输入以下命令来完成。
:set guifont=your_ARABIC_FONT
注意:字符串“您的_ARABIC_FONT”用于表示类似于 Linux/Unix 系统中使用的完整字体名称。(例如,-misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1)
您可以将 'guifont' 设置命令附加到您的 vimrc 文件,以获得与上面提到的相同的结果。换句话说,您可以将“:set guifont=您的_ARABIC_FONT”包含到您的 vimrc 文件中。
+ 在 X 窗口环境下,您也可以使用“-fn 您的_ARABIC_FONT”选项启动 Vim。
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 我的_utf8_arabic_文件...
或通过 Vim 中的以下命令启用 'arabic'
:set arabic
上面提到的两个可能的调用是用户被指示执行的推荐方式。除了启用了 'termbidi' 设置外,这两个命令选项
1. 设置适当的键盘映射 2. 启用单个组合对字符的删除 3. 启用右到左模式 4. 启用右到左命令模式(影响命令行) 5. 启用阿拉伯语整形模式(执行视觉字符更改)
您也可以将该命令附加到您的 vimrc 文件中,并将“:set arabic”包含到其中。
您还可以通过以下方式禁用阿拉伯语支持
:set noarabic
这会重置该命令启用的所有内容,而不会影响全局设置,因为这些设置可能会影响其他可能打开的缓冲区。简而言之,'noarabic' 命令,
1. 重置为备用键盘映射 2. 禁用单个组合对字符的删除 3. 禁用右到左模式
注意:'arabic' 命令会考虑到 'termbidi',以便从终端获得可能的外部双向 (bidi) 支持(例如,“mlterm”提供了这种支持)。'termbidi'(如果可用)优于右到左支持,并且由于其提供的功能级别,建议使用其支持。'arabic''termbidi' 启用时,只会设置键盘映射。
在设置 'termbidi' 时,为了垂直窗口隔离,可以使用 LTR 垂直分隔符,例如“l”或“𝖨”。也可以通过将它的颜色更改为前景色来隐藏它
:set fillchars=vert:l
:hi WinSeparator ctermbg=White
请注意,这是一种变通方法,而不是一个合适的解决方案。
另一方面,如果您想详细说明,并且选择不使用 'arabic' 快捷方式命令,那么这就是需要做的事情(即,如果您使用“:set arabic”,则可以跳过此部分)-
+ 激活阿拉伯语键盘映射
要激活阿拉伯语键盘映射(即,将您的英语/拉丁语键盘重新映射到看起来和感觉起来像标准的阿拉伯语键盘),将 'keymap' 命令设置为“arabic”。这可以通过输入
:set keymap=arabic
在您的 VIM 窗口中完成。您也可以将 'keymap' 设置命令附加到您的 vimrc 文件中。换句话说,您可以将“:set keymap=arabic”包含到您的 vimrc 文件中。
要切换(或切换)您的键盘映射在阿拉伯语和默认映射(英语)之间,建议用户在插入(或添加/替换)模式下按下“CTRL-^”键。命令行将通过在插入模式旁边显示一个“Arabic”字符串(例如,-- INSERT Arabic --)来显示您当前的映射,指示您当前的键盘映射。
+ 阿拉伯语组合对字符的删除
默认情况下,Vim 的 'delcombine' 选项处于禁用状态。此选项允许删除 LAM_ALEF (LAA) 组合字符中的 ALEF,并保留 LAM(即,它恢复到将组合字符视为其自然两个字符形式 - 这也适用于 harakat 及其组合形式)。您可以通过输入以下内容启用此选项
:set delcombine
在我们的 VIM 窗口中完成。您也可以将 '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' 命令。这可以通过输入以下内容来完成
:set arabicshape
在我们的 VIM 窗口中完成。您也可以将 'arabicshape' 设置命令附加到您的 vimrc 文件中。换句话说,您可以将“:set arabicshape”包含到您的 vimrc 文件中。

键盘映射/键盘 arabickeymap

Vim 中使用的字符/字母编码是标准的 UTF-8。强烈建议不要使用或尝试使用任何其他编码。
注意:UTF-8 是一种包罗万象的编码,因此它是阿拉伯语的唯一支持(并且鼓励)编码(所有其他专有编码应被阻止和反对)。
o 键盘
+ 在插入/替换模式下,CTRL-^ 在阿拉伯语/拉丁语模式之间切换
+ 键盘映射基于微软的阿拉伯语键盘映射(阿拉伯世界的事实上的标准)
+---------------------------------------------------------------------+
|!   |@   |#   |$   |%   |^   |&   |*   |(   |)   |_   |+   ||   |~  ّ |
|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 组合之间包含 harakats。一般来说,不要期望在 harakats 和 LAM+ALEF 组合字符(即使是这两个字符之后输入的字符)方面看到正确的视觉表示。提到的问题严格来说是视觉上的,这意味着保存这样的文件将包含所有适当的信息/编码 - 不会丢失任何东西。
没有其他已知的错误。
主要
命令索引
快速参考