终端仿真器中的某些应用程序将制表符选择为空格,而其他应用程序则按预期运行

终端仿真器中的某些应用程序将制表符选择为空格,而其他应用程序则按预期运行

任务

我需要在各种不同的远程服务器以及我自己的主机系统之间复制/粘贴包含制表符的文本,以及在不同的基于文本和图形的应用程序之间复制/粘贴包含制表符的文本。不过,为了简单起见,我将仅使用我的主机系统来回答这个问题。

环境

GNOME44.9
GNOME 终端3.50.1(还测试了:术语1.13.0,GNOME 控制台kgx)45.beta,终端383)
VIM9.1.16(还测试了:GNU 纳米7.2、更多的util-linux2.39.3,GNU 核心实用程序9.1)

输入

包含制表符/制表符 (UTF-8: 0x09) 的纯文本文件。

问题

使用打开输入文件VIM之内GNOME 终端,例如,选择包含制表符的文本,制表符将被选择为单独的空格。SSH 配置文件的可视化示例VIM
在 VIM 中选择包含标签的文本
在这里,我选择了前两行,并在第三行的制表符之间停了下来,与第一行的“t”位于同一位置(不使用VIM视觉的模式,这是标准选择GNOME 终端)。通常情况下,这种情况是不允许的;根据鼠标光标的位置,要么不选择任何制表符,要么选择直到字母“U”的整个制表符,中间没有任何内容。随后将选择的内容复制并粘贴为单独的空格。

但是,标签页在VIM,不转换为空格,光标从制表符的一端移动到另一端,依此类推,符合预期。十六进制转储突出显示制表符(它们就在那里!):

00000000 48 6f 73 74 20 73 75 70 65 72 75 73 65 72 0a09  |主机超级用户..|
00000010 48 6f 73 74 6e 61 6d 65 20 73 75 70 65 72 75 73 |主机名 superus|
00000020 65 72 2e 63 6f 6d 0a09  55 73 65 72 20 72 6f 6f |er.com..用户 roo|
00000030 74 0a0949 64 65 6e 74 69 74 79 46 69 6c 65 20 |t..身份文件|
00000040 7e 2f 2e 73 73 68 2f 73 75 70 65 72 75 73 65 72 |~/.ssh/超级用户|
00000050 2e 72 6f 6f 74 0a |.root.|
00000056

预期成绩

预期的行为是更多的,例如。使用更多的
在此处输入图片描述
在这里,我做出了与VIM并将鼠标停在同一位置,与第一行的“t”对齐。选项卡被选择为选项卡,随后被复制并粘贴为选项卡。

尝试的解决方案

这似乎与GNOME 终端或其设置;我用前面提到的其他模拟器进行了测试,得到了相同的结果。由于在不同的应用程序上观察到了正确的行为,因此它似乎是应用程序设置或错误。我四处搜索,找不到任何相关内容纳米。 为了VIM我尝试了不同的设置,例如、、、smarttab等等,但问题仍然存在。我还尝试了tabstopexpandtab视觉模式,其中预期的行为观察到。不幸的是,这只适用于VIM;我无法“放置”从中“拖出”的文本VIM进入编辑,例如,或任何其他应用程序!

问题

那么剩下的问题似乎适用于每个应用程序。我知道大多数文本编辑器都有一个将制表符转换为空格的设置,因此当按下制表符键时,会输入 8 个空格。在这种情况下,实际文件中有一个空格字符。因此,预计在选择时,它会被选为空格,随后被复制并粘贴为空格。

在这里,这个观察/问题仅影响文本的选择。制表符在实际文件中。但是,它可以被选择为最多 8 个单独的空格,随后被复制并粘贴为最多 8 个单独的空格。也许在某些情况下有些人需要这种行为?

预计VIM纳米?如果是,为什么?这些应用程序是否有设置阻止它们将选项卡选择为选项卡,或者是否有设置允许将选项卡选择为选项卡?有没有专门用于描述这种文本混乱的术语?

这些是VIM纳米,也许还有其他应用程序?

相关内容