有些语言,例如阿拉伯语、波斯语、希伯来语 (还有其他),需要具备从右到左显示文字
的能力。这些语言的文件仍以常规的方式存储,从右到左只是对显示方式的要求 (根据
Unicode 规范的定义): 文本方向为从右到左的文件是指字符在屏幕上的显示应从右到左
排列。
双向显示 (英语缩写是 bidi) 是 Unicode 为这些语言提供的完整解决方案。bidi 允许
用户在同一个窗口同时显示从右到左和从左到右的文本。目前,为了简便起见,Vim 并未
提供双向显示,而只是提供一种显示、输入和使用从右到左的语言的方法。一个较旧的混
合方案是为每个字符 (或一组字符) 编码不同的方向。我们不支持这个方案,因为在已有
的编辑器中实现这一功能并非简单扩展 (而且 Unicode 也不认可这种方案)。
许多编程人员并不使用从右到左模式,此功能在某些情况下未必能正常工作。如果能说明
出现的问题以及修正后应有的正确行为,请在 github 上创建议题,见 bug-reports 。
特色
o 编辑从左到右的文件时,无需改变 Vim 原有的编辑方式,
o 可在从右到左窗口中查看和编辑文件。每个窗口的文本书写方向彼此独立,因而可以
同时以从右到左和从左到右两种模式察看同一个文件 (这有助于编辑混合两种书写方
向的文本)。
o 和原有的 Vim 保持兼容。几乎所有功能都支持从右到左模式 (当然,不排除存在某些
缺陷)。
o 退出反向插入模式后,光标会尽可能恢复到文件里正确的位置。
o 无需终端对从右到左能力的特别支持。这些功能的支持完全独立于硬件。
o 许多语言都使用和依赖从右到左的显示支持。只要提供所需的键盘映射和少量的代码
调整,就可以相对容易地实现这些语言的支持。其中已经支持的语言包括 -
arabic.txt 、 farsi.txt 和 hebrew.txt 。
如果还有兴趣 ...
为了最大限度地利用 'rightleft' 选项,可以使用反向插入。打开 'revins' (反向
输入) 选项时,插入反向进行。这可用于输入从右到左的文本。此时,在输入文字时
光标不动,而文本会向右移动。<BS> 会删除光标下的字符,CTRL-W 和 CTRL-U 也会
反向进行。无论 'backspace' 选项如何设置,<BS>、CTRL-W 和 CTRL-U 都不会在插
入开始位置和行尾停留。
现在 (还) 未提供反向替换模式。
置位 'showmode' 选项且反向插入模式激活时,状态行上会显示 "-- 反向插入 --"。
o 在从右到左的窗口粘贴
用鼠标剪切文本并在从右到左的窗口中粘贴时,文本会被调转方向,因为从剪切缓冲
区里得到的字符是按从左到右的顺序排列的,而文件中则会以从右到左的方向插入。
要避免这个问题,在粘贴前先切换 'revins' 选项。
漏洞
o 在从右到左的窗口里,CTRL-A 和 CTRL-X 命令 (增减操作) 无法正确处理。
o 命令行中不支持反向插入和从右到左模式。不过,这不会减少编辑器的功能,因为仍
然可以在命令行上以从左到右的方式输入键盘映射、缩写和搜索命令。
o 从右到左的模式较慢,因为这是由 Vim 自行模拟的,而非控制终端直接支持。
o 'rightleft' 和 'revins' 同时打开时,'textwidth' 无法工作。行不会自动回绕;
只会得到一条很长的行。
o 不支持完整的双向显示 (bidi)。
vim:tw=78:ts=8:noet:ft=help:norl: