0

默认情况下,Emacs 24 可以处理阿拉伯语、希伯来语和其他从右到左 (RTL) 的语言。我有多语言术语模拟器可以在 X 中处理这个问题,但我想在 emacs 中使用 eshell 来查看非英文字符文件名(我有很多)。当我使用 eshell 时,字符的顺序不正确,并且拼写成乱码。 (setq-default bidi-display-reordering t)(这是默认设置)显然没有区别。

这可能吗?

4

1 回答 1

1

我相信您正在通过 emacs + mlterm 进行双重重新排序,并且需要禁用一个。

您的屏幕截图显示在上半部分 mlterm 成功检测到逐行基本方向并重新排序字符。并且默认情况下,Emacs 24 会在终端中重新排序 bidi,假设是 non-bidi LTR termianl。将两者结合起来会导致 ABC -> CBA -> ABC 的双重重新排序。

您有 2 个选项:

  1. 在 mlterm 中禁用 bidi(至少在运行 emacs 时,不知道如何自动化)。

  2. 在 emacs 中禁用 bidi(至少在 mlterm 下运行时)。即将双向显示重新排序设置为nil,而不是t

我希望第一个会更好。mlterm 只能给你一个愚蠢的“bidi display”层,这在编辑器之上可能会令人困惑;emacs 为您提供“双向编辑”,其中有人想到了整个交互应该如何工作。

  • 具体来说,emacs 中的并排“窗口”应该在 emacs 执行双向时运行良好,而在 mlterm 执行时会严重中断。
  • OTOH,当 mlterm 做比迪烟时,鼠标复制粘贴可能效果更好。
    如果 emacs 发送重新排序的字符,这就是 mlterm 鼠标选择将复制的内容。Emacs主要可以接管鼠标,xterm-mouse-mode但是(未经测试的推测)它适用于终端坐标,并且需要额外的工作才能将它们与逻辑顺序文本匹配。

PS我不确定为什么最终结果是右对齐的,因为之前似乎有一个空行所以Emacs应该将它视为一个新段落,决定它是RTL并将右对齐文本发送到mlterm,我希望mlterm 然后反转该行,使其左对齐。我可能错过了一些东西。

于 2016-06-24T13:06:46.290 回答