相对经常地,我发现自己想退出less
,但留下我在屏幕上看到的内容,以供回看。有什么办法可以做到这一点吗?解决方法?
(我当前的解决方法是退出,然后使用more
。因此任何比这更好的解决方法都受到欢迎。理想的情况是我一旦进入 ,就可以使用它less
,也许可以通过 shell 设置或一些脚本编写。)
我的桌面是 OSX,但我使用 RHEL 和 Ubuntu 服务器。
答案1
这实际上是您正在使用的终端仿真器(xterm、gnome-terminal、konsole、screen)的一个功能。当调用less
或等程序时,会启动备用屏幕或替代屏幕vim
。此替代屏幕没有历史记录缓冲区,当您退出程序时会立即退出,切换回原始屏幕,从而恢复以前的窗口内容历史记录和位置。
您可以less
通过传递参数“-X”来阻止在替代屏幕中启动。
less -X /path/to/some/file
您还可以传递“-X”作为环境变量。因此,如果您正在使用bash
,请将其放入~/.bashrc
:
export LESS="-X"
但是,这会禁用 termcap(终端功能)初始化和取消初始化,因此您使用时的其他视图less
可能会显示为关闭。
screen
另一种选择是altscreen off
在您的~/.screenrc
.less
不会清除屏幕并应保留颜色格式。想必tmux
也会有同样的选择。
这博客条目描述问题并提供一些不同的解决方案,并gnome-terminal
取得了不同的成功。
答案2
我记得这是less -SEX
当我需要将输出转储到屏幕但不希望换行时。例如,docker ps | less -SEX
它的作用是这样的:
-S
- 滚动而不是换行
- 如果放下
-E
,您可以使用箭头键滚动
-E
- 到达 EOF 时退出
-X
- 防止术语交换/空白
- “记忆”部分是我知道S和E是做什么的,所以这一定是另一部分。 (我们将此命令提交到内存的原因是我们想要转储(而不是进入交互式会话)未包装的输出。
如果你不记得了less -SEX
,你就没有太大希望。每次我猜的时候就重新谷歌一下。
答案3
乔治的解决方案对我不起作用,但这个解决方案确实有效(来自博客条目在他的回答中链接)。
$ infocmp -I xterm > ~/xterm-noclear.src
编辑 ~/xterm-noclear.src
将第二行的名称从“xterm”更改为“xterm-noclear”,或任何适合您的名称(如果存在“xterm-debian”,也将其更改)
删除指令“smcup”和“rmcup”(例如“smcup=\E[?1049h,”和“rmcup=\E[?1049l,”)
$ mkdir ~/.terminfo
$ tic ~/xterm-noclear.src
(x/xterm-noclear 应该出现在您的 ~/.terminfo 目录中)$ export TERM=xterm-noclear
(现在检查 less 的行为,如果满意,请将导出指令行添加到您的 ~/.profile 中)
(我直接从 @jah 拒绝编辑的 George 答案中复制了这些说明。)
答案4
有一个更简单的方法。只需将命令传递给“cat”命令
less blah.txt|cat
它不仅适用于“less”,还适用于其他类似的命令,这些命令创建一个“新”终端来打印输出(例如 git log)