'less' 命令在退出时清除屏幕 - 如何关闭它?

'less' 命令在退出时清除屏幕 - 如何关闭它?

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

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

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

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

答案1

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

来自手册页:

-X 或 --no-init

禁止将 termcap 初始化和取消初始化字符串发送到终端。如果取消初始化字符串执行了不必要的操作(如清除屏幕),则有时需要这样做。

如果内容适合一个屏幕,则不太令人兴奋,这是选择-F

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

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

-F但不是默认值,所以它很可能在某处为你预设了。检查环境变量LESS

答案2

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

export LESS="-XF"

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

有时命令会有别名(在某些发行版中甚至默认如此)。要检查这一点,请输入

alias

不带参数,看看它是否被你不想要的选项别名化。要运行 $PATH 中的实际命令而不是别名,只需在其前面加上反斜杠:

\less

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

echo $LESS

答案3

或者直接在全局 git 配置中进行设置:

git config --global core.pager 'less -FX'

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

答案4

最新版本

598版(最早于2021年12月发布)介绍了--redraw-on-quit转变以防止清除屏幕。虽然在启动 less 时会启用开关,但如果在 less 启动时未启用该开关,也可以通过简单地键入 来启用该功能--redraw-on-quit。我没有足够新的版本来测试,但我从最可靠的来源得知,只需键入前 4 个字符就足够了。

想要使用更短的组合键的普通用户也可以向 lesskey 文件中添加一个条目。

2022 年之前的版本

598 之前的版本仍然可以实现这一点,这要归功于较旧的 -X 开关. 来自手册页:

-X 或 --no-init

禁止将 termcap 初始化和取消初始化字符串发送到终端。如果取消初始化字符串执行了不必要的操作(如清除屏幕),则有时需要这样做。

这应该被视为一种解决方法,因为它完全禁用初始化,这可能导致键(如 Home 和 End)停止工作。

相关内容