如何让 vim 正确渲染阿拉伯文本?

问题描述 投票:0回答:2

我正在学习阿拉伯语,我想使用 Vim 来做笔记。我在 Windows 10 上尝试了几种不同的设置,到目前为止,最接近良好设置的似乎是 MSYS2 中的 vim。 MSYS2 正确渲染阿拉伯文本,从右到左书写,但是当我在 Vim 中打开文件时,虽然文本仍然是从右到左书写的阿拉伯字符,但字母没有连接。

以下是一些使用 cat 的示例:

سريع
اعتن بنفسك
بطيء
أن تقلق
لا تقلق

和 Vim 中的相同:

ﺱﺮﻴﻋ
ﺎﻌﺘﻧ ﺐﻨﻔﺴﻛ
ﺐﻄﻳﺀ
ﺄﻧ ﺖﻘﻠﻗ
ﻻ ﺖﻘﻠﻗ

http://unicode.scarfboy.com/ 上查找终端输出的第一个单词给我这些:

Constituent codepoints:
   0633   ARABIC LETTER SEEN
   0631   ARABIC LETTER REH
   064A   ARABIC LETTER YEH
   0639   ARABIC LETTER AIN

同一个单词在 Vim 中的代码是:

Constituent codepoints:
   FEB1   ARABIC LETTER SEEN ISOLATED FORM
   FEAE   ARABIC LETTER REH FINAL FORM
   FEF4   ARABIC LETTER YEH MEDIAL FORM
   FECB   ARABIC LETTER AIN INITIAL FORM

这看起来像是以错误的方式解释文本,第一个字母应该是初始形式,最后一个字母应该是最终形式。

当我尝试输入

:set arabic
时,阿拉伯语和拉丁语文本的书写方向都会发生变化,使所有内容都向后,但字符呈现正确(只是在错误的位置)。

有没有办法让vim像终端一样输出文本?也许只需更改首先考虑的字符和最后考虑的字符,因为 MSYS2 正在正确输出文本。

顺便说一句,我的首选设置是在 Windows 终端内的 WSL 中使用 vim,但这并不重要,只要我最终得到一些可用的东西即可。

vim unicode mingw arabic msys2
2个回答
5
投票

Unicode 双向性 (bidi) 使用户能够查看 同时正确地从右到左和从左到右文本 在同一个窗口内。由于简单,Vim 不提供 bidi。相反,它提供命令来使两个方向之间的切换更容易。

" switch to right-left mode (arabic)
:set rl
" switch to left-right mode (english)
:set norl

但是,如果你的终端支持 bidi,你可以通过

termbidi
设置告诉 Vim 终端负责文本方向:

set termbidi

如果设置了

termbidi
,更改
arabic
设置现在只会影响您的键盘映射和
delcombine
,它允许您单独删除重叠字符(fathah + 字母)。


0
投票

我也有同样的问题。 我使用这个命令:

:set termbidi
:set arabic

而且它有效,至少对我来说。 有关更多信息,请使用 Vim 帮助并阅读“arabic.txt”,使用以下命令:

:help arabic.txt

© www.soinside.com 2019 - 2024. All rights reserved.