退出时“少”命令清除屏幕 - 如何将其关闭?

Woj*_*rek 93 unix command-line environment-variables

如何强制less程序退出时不清除屏幕?

我希望它的行为像git log命令:

  • 退出时,它会在屏幕上留下最近看到的页面
  • less即使内容适合一个屏幕,它也不会退出(尝试git log -1

有任何想法吗?我less在手册中没有找到任何合适的选项或 env 变量,但我怀疑它是通过一些 env 变量设置的。

sle*_*ske 109

为防止less退出时清屏,请使用-X

从联机帮助页:

-X 或 --no-init

禁止将 termcap 初始化和取消初始化字符串发送到终端。如果取消初始化字符串做了一些不必要的事情,比如清除屏幕,这有时是可取的。

如果内容适合一个屏幕,则减少退出,这是选项-F

-F 或 --quit-if-one-screen

如果整个文件可以显示在第一个屏幕上,则使 less 自动退出。

-F不是默认设置,因此它可能已为您预设在某处。检查环境变量LESS

  • 如果您知道`-F` 但不知道`-X`,这尤其令人讨厌,因为然后移动到在init 上重置屏幕的系统将使短文件根本不会出现,没有明显的原因。当我尝试将我的 `ACK_PAGER='less -RF'` 设置带到 Mac 时,这用 [`ack`](http://betterthangrep.com/) 咬了我。谢谢一堆! (8认同)
  • 这对于手册页特别有用,因此只要您使用 'q' 键退出较少,手册页就不会消失。也就是说,您滚动到手册页中您感兴趣的位置,只有在您退出 less 寻呼机以使用信息时它才会消失。因此,我添加了:`export MANPAGER='less -s -X -F'` 到我的 .bashrc 以在我退出较少时将手册页信息保留在屏幕上,这样我就可以实际使用它而不必记住它. (8认同)
  • 你必须决定什么时候开始`less`,当你要退出时它必须如何表现,这有点糟糕。 (3认同)
  • @MichaelBurr 那是因为对于 `-X` 它必须在关闭时*以及启动时*做一些特殊的事情,因此您只能在启动时选择此行为。 (2认同)

Der*_*lle 24

如果您希望任何命令行选项始终为默认值,您可以将 LESS 环境变量添加到 .profile 或 .bashrc 中。例如:

export LESS="-XF"
Run Code Online (Sandbox Code Playgroud)

每当从该登录会话运行较少时,将始终应用 -X -F。

有时命令是别名的(即使在某些发行版中是默认的)。要检查这一点,请键入

alias
Run Code Online (Sandbox Code Playgroud)

没有参数来查看它是否被您不想要的选项别名。要在 $PATH 中运行实际命令而不是别名,只需在它前面加上一个反斜杠:

\less
Run Code Online (Sandbox Code Playgroud)

要查看您的环境中是否设置了 LESS 环境变量并影响行为:

echo $LESS
Run Code Online (Sandbox Code Playgroud)

  • 事实上,我添加了 `export LESS="-XFR"` 以便颜色也通过 `less` 显示。 (2认同)
  • 感谢那!`-XF` 本身就破坏了 `git diff` 的输出,而 `-XFR` 获得了两全其美的效果——没有屏幕清除,但是有颜色的 `git diff` 输出。 (2认同)

Les*_*ung 10

或者只是在全局 git 配置中设置它:

git config --global core.pager 'less -FX'
Run Code Online (Sandbox Code Playgroud)

这样其他工具就不会受到影响(我喜欢)。