任务
我需要在各种不同的远程服务器以及我自己的主机系统之间复制/粘贴包含制表符的文本,以及在不同的基于文本和图形的应用程序之间复制/粘贴包含制表符的文本。不过,为了简单起见,我将仅使用我的主机系统来回答这个问题。
环境
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:
在这里,我选择了前两行,并在第三行的制表符之间停了下来,与第一行的“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
等等,但问题仍然存在。我还尝试了tabstop
expandtab
视觉模式,其中预期的行为是观察到。不幸的是,这只适用于VIM;我无法“放置”从中“拖出”的文本VIM进入编辑,例如,或任何其他应用程序!
问题
那么剩下的问题似乎适用于每个应用程序。我知道大多数文本编辑器都有一个将制表符转换为空格的设置,因此当按下制表符键时,会输入 8 个空格。在这种情况下,实际文件中有一个空格字符。因此,预计在选择时,它会被选为空格,随后被复制并粘贴为空格。
在这里,这个观察/问题仅影响文本的选择。制表符在实际文件中。但是,它可以被选择为最多 8 个单独的空格,随后被复制并粘贴为最多 8 个单独的空格。也许在某些情况下有些人需要这种行为?
预计VIM和纳米?如果是,为什么?这些应用程序是否有设置阻止它们将选项卡选择为选项卡,或者是否有设置允许将选项卡选择为选项卡?有没有专门用于描述这种文本混乱的术语?
这些是VIM,纳米,也许还有其他应用程序?