在终端中显示两列,以便可以从一列复制多行

问题描述 投票:0回答:0

当实现显示两列的 CLI 时,一种可能的实现是用空格填充左列以对齐右列。示例实现:

from itertools import zip_longest
from shutil import get_terminal_size

left_lines = ["aaa", "bbb"]
right_lines = ["xxx", "yyy", "zzz"]

columns = min(get_terminal_size().columns, 80)
column_width = (columns - 1) // 2

for left, right in zip_longest(left_lines, right_lines, fillvalue=""):
    assert len(left) <= column_width
    assert len(right) <= column_width
    print(left.ljust(column_width) + "|" + right)

结果:

aaa                                    |xxx
bbb                                    |yyy
                                       |zzz

但是,这会导致无法从一列复制多行的问题。例如。当试图从左列复制“aaa”和“bbb”行时(在我的例子中,在 urxvt 中使用主选择或剪贴板),我得到:

aaa                                    |xxx
bbb

是否有另一种实现可以避免这个问题,至少在某些终端仿真器中是这样?

terminal console command-line-interface terminal-emulator
© www.soinside.com 2019 - 2024. All rights reserved.