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

Mát*_*ján 7 unicode vim mingw arabic msys2

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

\n

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

\n
\xd8\xb3\xd8\xb1\xd9\x8a\xd8\xb9\n\xd8\xa7\xd8\xb9\xd8\xaa\xd9\x86 \xd8\xa8\xd9\x86\xd9\x81\xd8\xb3\xd9\x83\n\xd8\xa8\xd8\xb7\xd9\x8a\xd8\xa1\n\xd8\xa3\xd9\x86 \xd8\xaa\xd9\x82\xd9\x84\xd9\x82\n\xd9\x84\xd8\xa7 \xd8\xaa\xd9\x82\xd9\x84\xd9\x82\n
Run Code Online (Sandbox Code Playgroud)\n

和 Vim 中的相同:

\n
\xef\xba\xb1\xef\xba\xae\xef\xbb\xb4\xef\xbb\x8b\n\xef\xba\x8e\xef\xbb\x8c\xef\xba\x98\xef\xbb\xa7 \xef\xba\x90\xef\xbb\xa8\xef\xbb\x94\xef\xba\xb4\xef\xbb\x9b\n\xef\xba\x90\xef\xbb\x84\xef\xbb\xb3\xef\xba\x80\n\xef\xba\x84\xef\xbb\xa7 \xef\xba\x96\xef\xbb\x98\xef\xbb\xa0\xef\xbb\x97\n\xef\xbb\xbb \xef\xba\x96\xef\xbb\x98\xef\xbb\xa0\xef\xbb\x97\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
Constituent codepoints:\n   0633   ARABIC LETTER SEEN\n   0631   ARABIC LETTER REH\n   064A   ARABIC LETTER YEH\n   0639   ARABIC LETTER AIN\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n
Constituent codepoints:\n   FEB1   ARABIC LETTER SEEN ISOLATED FORM\n   FEAE   ARABIC LETTER REH FINAL FORM\n   FEF4   ARABIC LETTER YEH MEDIAL FORM\n   FECB   ARABIC LETTER AIN INITIAL FORM\n
Run Code Online (Sandbox Code Playgroud)\n

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

\n

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

\n

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

\n

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

\n

Ibr*_*med 6

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

" switch to right-left mode (arabic)
:set rl
" switch to left-right mode (english)
:set norl
Run Code Online (Sandbox Code Playgroud)

然而,如果你的终端支持 bidi,你可以通过以下设置告诉 Vim 终端负责文本方向termbidi

set termbidi
Run Code Online (Sandbox Code Playgroud)

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