AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 554478
Accepted
Nathaniel M. Beaver
Nathaniel M. Beaver
Asked: 2019-11-28 09:45:33 +0800 CST2019-11-28 09:45:33 +0800 CST 2019-11-28 09:45:33 +0800 CST

为什么 Esc-[ 在 `less` 中不向左滚动?

  • 772

根据手册页,lesskey以下键绑定到左滚动和右滚动:

\e[       left-scroll
\e]       right-scroll
\e(       left-scroll
\e)       right-scroll
\kl       left-scroll
\kr       right-scroll

箭头键和Esc-(/Esc -)可以正常工作,就像Esc-]向右滚动一样,但Esc-[不能用于向左滚动。相反,它只是在命令行提示符中显示:

ESC[

将此行添加到~/.lesskey函数中作为解决方法:

\e[ left-scroll

但是为什么默认情况下它不起作用?

我在 Debian stretch 以及 Kubuntu 18.04 以及各种终端仿真器上的 XFCE4 中观察到了这种行为。

$ less --version
less 487 (GNU regular expressions)
Copyright (C) 1984-2016  Mark Nudelman

less comes with NO WARRANTY, to the extent permitted by law.
For information about the terms of redistribution,
see the file named README in the less distribution.
Homepage: http://www.greenwoodsoftware.com/less

我考虑提交错误报告,但已知错误和功能请求列表 表明这是一种已知行为:

增强请求

[ . . . ]

参考号:175

在版本中实现:322

为 ESC-[ 添加备用命令。

这实际上是一个限制less,还是终端处理 Escape 键的一个怪癖?

keyboard-shortcuts escape-characters
  • 1 1 个回答
  • 173 Views

1 个回答

  • Voted
  1. Best Answer
    Stéphane Chazelas
    2019-11-28T12:45:48+08:002019-11-28T12:45:48+08:00

    这是因为ESC [也恰好是某些终端上的几个功能键发送的字符序列的开头,例如HomeorEnd或PageUp... 这些也绑定到less.

    因此,当less收到 a时ESC [,它会等待更多(不会像其他应用程序那样超时)。

    在我的终端ESC[6~上是PageDown. 如果我按Alt+[,我ESC [会像你一样看到。但是然后我可以进入6并且~确实向下滚动。

    如果您运行TERM=vt100 less而不是less,则vt100terminfo 页面没有任何条目Homeor End... 您会看到ESC [有效。

    但是,如果您添加\e[ left-scroll到您的~/.lesskey(并运行lesskey将其编译为~/.less),您会注意到ESC [作品向左滚动,但所有Home, PageUP... 停止工作,它们都向左滚动,并且它们发送的额外字符会引起一些哔哔声。

    查看代码,这完全是关于命令表的处理顺序。~/.less命令表最后添加,但插入到头部,因此它的条目在内置条目之前处理。

    在ESC [输入时,如果\e[ left-scroll首先找到 for 条目,则对其进行处理,如果首先找到 for \kD forw-screen(在许多终端上转换为\e[6~ forw-screen),则它只是一个前缀match,并less等待更多 input。

    所以,这是一个错误。解决方法是添加超时。然而,增加一个短暂的超时将意味着放弃多键命令;长时间超时以给用户足够的时间输入多键命令可能会导致ESC [反应迟钝。

    现在,具有PageUp等的终端通常也具有Left和Right键,它们也绑定到left-scroll,,right-scroll因此您可能希望使用它来代替滚动。

    • 3

相关问题

  • 如何停止使用 Kazam 录制

  • 将 CAPS+hjkl 绑定到方向键;大写到 ESC

  • 睡眠快捷指令 lubuntu?

  • 清除终端回滚缓冲区的最简单方法+一些更深入的解释?

  • 在 Vim 中删除到命令行末尾

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve