forked from ma6174/vim
-
Notifications
You must be signed in to change notification settings - Fork 0
/
arabic.cnx
executable file
·273 lines (194 loc) · 10.8 KB
/
arabic.cnx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
*arabic.txt* For Vim version 7.3. 最近更新: 2006年2月
VIM 参考手册 by Nadim Shaikli
译者: Willis
http://vimcdoc.sf.net
Vim 的阿拉伯语支持 (选项和映射) *Arabic*
{Vi 没有任何这里的功能}
*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' 只修改键盘映射。
从另一方面说, 如果你喜欢详细而具体的操作,你可以不用 '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:ft=help:norl: