是否有任何方法可以在不清除屏幕的情况下退出“较少”状态?


68

相对而言,我发现自己想退出,less但希望将自己在屏幕上看到的内容留给我参考。有什么办法吗?解决方法?

(我目前的解决方法是先退出,然后使用more。因此,任何比这更好的解决方法都值得欢迎。理想的情况是一旦进入内部就可以使用它less,也许是通过shell设置或一些脚本编写的。)

我的桌面是OSX,但是我使用RHEL和Ubuntu服务器。


1
读一个长输出(如in git diffgit logless -X将占用我终端中的滚动缓冲区,并逐出大部分先前的输出。如果less可以在退出时以最后一屏输出退出,我会很喜欢。即退出后不会占用滚动缓冲区的一页less。有任何想法吗?
musiphil 2014年

顺便说一句,-R通常是比更为安全的选择-r
musiphil 2014年

谢谢。对于那些想知道的人:-R is "Like -r, but only ANSI "color" escape sequences are output in "raw" form. Unlike -r, the screen appearance is maintained correctly in most cases."
Steve Bennett 2014年

@musiphil也许-c?
Vanessa Phipps 2014年

@MatthewPhipps:我想-c是关于当您在内部移动时如何更新屏幕less
musiphil 2014年

Answers:


68

这实际上是您所使用的终端仿真器的功能(xterm,gnome-terminal,konsole,screen)。当调用诸如less或的程序时,将启动备用屏幕或altscreen vim。该altscreen没有历史记录缓冲区,并且在您退出程序时立即退出,切换回原始屏幕,该屏幕将还原以前的窗口内容历史记录和位置。

您可以less通过传递参数“ -X” 来阻止在altscreen中启动。

less -X /path/to/some/file

您还可以将“ -X”作为环境变量传递。因此,如果您正在使用bash,请将其放置在~/.bashrc

export LESS="-X"

但是,这使termcap(终端功能)初始化和取消初始化无效,因此使用时的其他视图less可能会消失。

另一种选择是使用screen和设置选项altscreen off在你的~/.screenrcless不会清除屏幕,应该保留颜色格式。大概tmux会有相同的选择。

这篇博客文章描述了问题,并提供了一些针对gnome-terminal不同成功的不同解决方案。


2
完善。有缺点吗?
史蒂夫·本内特

2
等等,我已经发现了一个- git log(可能还有其他彩色命令)的输出混乱了。
史蒂夫·贝内特

1
@SteveBennett这足够小了,我将其作为别名:alias les="/usr/bin/less -X"
bonsaiviking 2012年

4
嘿,我想我刚刚发现了针对上述git log问题的解毒剂:export LESS="-r -X"。(没有思想的副作用是什么是...)
史蒂夫·贝内特

5
实际上,gitLESS变量FRSX设置为运行分页器时是否未设置,因此您可以将其LESS设置为unset并less自动使用来运行-FRSX。寻找core.pagergit-config(1)获取更多信息。
musiphil 2014年

4

George的解决方案对我不起作用,但是该解决方案有效(来自他的答案中链接的博客条目)。

  1. $ infocmp -I xterm > ~/xterm-noclear.src

  2. 编辑〜/ xterm-noclear.src

    • 将第二行的名称从'xterm'更改为'xterm-noclear'或任何适合您的名称(如果存在,也更改'xterm-debian')

    • 删除指令“ smcup”和“ rmcup”(例如“ smcup = \ E [?1049h,”和“ rmcup = \ E [?1049l,”)

  3. $ mkdir ~/.terminfo

  4. $ tic ~/xterm-noclear.src (x / xterm-noclear应该出现在您的〜/ .terminfo目录中)

  5. $ export TERM=xterm-noclear (现在检查less的行为,如果满意,将export指令行添加到您的〜/ .profile中)

(我直接从@jah拒绝的George答案编辑中复制了这些说明。)


4

我记得的方式less -SEX适用于需要将输出转储到屏幕但不希望换行的情况。例如docker ps | less -SEX,这样做是这样的:

  • -S
    • 滚动而不是换行
    • 如果放下-E,则可以使用箭头键滚动
  • -E
    • 到达EOF时退出
  • -X
    • 防止术语互换/空白
    • “记忆”部分是我知道S和E的作用,因此这必须是另一部分。(将这个命令提交到内存的原因是我们要转储(而不是进入交互式会话)未包装的输出。

如果您不记得了less -SEX,那么您的希望就不多了。我想每次都可以重新Google。


这家伙有问题,您可以少给他做爱吗?
Yossico
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.