gpt4 book ai didi

zsh - 是否可以在 zsh 中自动分页输出?

转载 作者:行者123 更新时间:2023-12-04 23:04:37 40 4
gpt4 key购买 nike

有时候我们在终端运行一个命令,输出太大了,忘了把“|less”放在最后。所以我想知道当输出在 zsh 中太大时是否可以分页?

我尝试使用 python 和 less 来实现这个功能:

#!/usr/bin/env python3
termHeight = 25
import sys
from subprocess import Popen, PIPE
p = Popen(['unbuffer'] + sys.argv[1:], stdin=PIPE, stdout=PIPE)
lines = []
for count in range(termHeight):
line = p.stdout.readline()
if not line:
break
print(line.decode('utf8'), end='')
lines += [line]
if line:
q = Popen(['less', '-Mr'], stdin=PIPE)
q.stdin.writelines(lines)
while True:
line = p.stdout.readline()
if not line:
break
q.stdin.write(line)
q.communicate()

让我们将这个 python 脚本保存到 p.py。所以当我们运行像“python p.py ls --help”这样的“python p.py some commands”时,如果输出超过25行,这个脚本将使用less来显示输出。

问题是我无法从用户那里获得输入。这意味着该解决方案根本不适用于交互式程序。

最佳答案

也许另一种选择是使用 screen tmux 之类的东西,而不是试图强制 zsh 为您分页。该解决方案为诸如 vimssh 连接、寻呼机 lessmore 等编辑器提供支持,并且还提供了多命令回滚功能,通过寻呼机传递每个命令是不允许的。

这种方法会给你:

  • 在多个命令(而不仅仅是最后输入的命令)上回滚(相当多的回滚)。
  • 重新附加到您的 session (这样您就不会在午餐回来时丢失早上 session 的回滚)。

  • 这种方法会花费您:
  • 在运行命令之前,您需要创建一个要附加到的 session 。这不是很多工作,但根据我的经验,我忘记使用 screen 的时候正是我非常非常想要的时候。
  • 关于zsh - 是否可以在 zsh 中自动分页输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15453394/

    40 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com