我使用 SSH 连接到服务器,有时我需要使用一些从右到左的语言(例如阿拉伯语)。
当我使用一些控制台软件(例如lxterminal
或xfce4-terminal
),效果很好。在其他终端中,文本是向后的。此外,这种行为甚至在不同的计算机上也不一致(xfce4-terminal
在家中和办公室中的行为不同)。
更糟糕的是终端都很好。本地文件可以正确显示。只有当我通过 SSH 连接时才会出现问题。
所以有什么问题?从哪里来?是 SSH 还是终端,或者两者兼而有之?
答案1
更糟糕的是终端都很好。
我怀疑是这样。这是一个比您想象的要复杂得多的故事。终端的行为不同,一个终端的行为可能对一组特定的应用程序是从右到左友好的,而其他终端的行为可能对另一组应用程序是 RTL 友好的。
本地文件可以正确显示。
同样,这很大程度上取决于您所说的“显示”的含义:您是否使用它们打开,或者使用、、、其他一些应用程序等cat
打开。也许某些终端会给出预期的结果和意外的结果,而其他终端则相反。vim
emacs
less
cat
vim
您可能感兴趣这一份约50页长的技术文档研究了情况并提出了解决问题的方法,使终端能够支持多种模式,从而支持不同类型应用程序看似矛盾的需求。
VTE 0.58 版本实现了建议的解决方案。 VTE 是lxterminal
和xfce4-terminal
以及许多其他终端使用的终端仿真引擎。因此,您是否看到这些软件中的“好”或“坏”行为可能很容易取决于 VTE 的版本。然而,您可能会发现旧行为是“好”行为,而新行为是“坏”行为,具体取决于您测试的应用程序类型。在这种情况下,当 VTE >= 0.58 时,您可以使用文档中提到的转义序列来切换模式,例如printf "\e[8l"
恢复到旧的行为。
ssh
无关紧要,除了软件的本地或远程版本可能不同之外。