ANSI转义序列^ [[K由较少的-R处理,但不是由大多数处理

格雷戈里·尼斯贝特(Gregory Nisbet)

我正在编写一个包装器,ack以便在本地搜索代码,并在管道中将一些额外的上下文行传递到寻呼机。

这是包装器脚本ackc在不同的示例之间,我将改变传递给ack的内容--pager

#!/bin/sh

ack -C 20 -i \
    --pager=most \
    --heading \
    --break \
    --color \
    --show-types \
    "$@"

使用less(不带-R)作为寻呼机,几乎所有转义序列都使用脱字符号表示(不知道这是什么。^[例外。它ESC以反转的背景色呈现(此处未复制颜色) 。

下面是一个输出的一个样品(通过产生ackc--pager=less和环境变量如LESSLESSPIPE等清零)

ESC[1;32m.local/lib/python2.7/site-packages/markupsafe/_speedups.cESC[0m
...
ESC[1;33m19ESC[0m:#define PY_SSIZE_T_MAX ESC[30;43mINTESC[0m_MAXESC[0mESC[K
ESC[1;33m20ESC[0m:#define PY_SSIZE_T_MIN ESC[30;43mINTESC[0m_MINESC[0mESC[K

此处重要的转义序列是^[[K每行包含突出显示项的末尾序列。由适当处理less -R

.local/lib/python2.7/site-packages/markupsafe/_speedups.c
...
19:#define PY_SSIZE_T_MAX INT_MAX
20:#define PY_SSIZE_T_MIN INT_MIN

most但是,似乎不能很好地处理它。

.local/lib/python2.7/site-packages/markupsafe/_speedups.c
1-/**
...
19:#define PY_SSIZE_T_MAX INT_MAX^[[K
20:#define PY_SSIZE_T_MIN INT_MIN^[[K

^[[K按原样通过序列。

此序列为CSI (n) K -- EL -- Erase in Line如果不指定任何参数,它将擦除到该行的末尾。如果匹配项出现在行尾,则可能需要清除背景色的杂散位。

有什么原因为什么most不了解这个顺序?我可以配置它以正确处理它吗?

托马斯·迪基

大多数人的行为都是硬编码的。源代码有几个类似这样的块,用于在接收到转义字符后进行解析:

     if ((ch == 033) && (Most_V_Opt == 0))
       {
      while ((ch == 033)
         && (0 == most_parse_color_escape (&b, e, NULL))
         && (b < e))
        ch = *b++;
       }

基本上说如果找到转义字符(033-V且未设置选项,则查找ANSI颜色转义序列。

所有清除操作也都以转义字符开头,因此大多数不会执行所要求的操作。

顺便说一句,我看到戴维斯(Davis)在几天前做了更改,以作为一种解决方法。最终,它将以打包的版本...


作者:John E.Davis 2018-07-11 06:26:02
提交人:John E.Davis 2018-07-11 06:26:02
父:97befd7b984520e80475bb1cb857b35650755a15(pre5.1-20:增加了对Home / End键的支持)
分支:master,remotes / origin / master
遵循:
    前提
pre5.1-21:为使用不带行尾清除序列(ESC [K)的程序尝试对输出着色的程序增加了一种变通方法考虑isatty(fileno(sdout))的值。

+21。src / line.c:为尝试
使用行尾清除转义序列(ESC [K)
+而不考虑isatty(fileno(sdout))的值对+输出着色的程序添加了一种变通方法)。
除非使用-v,否则大多数将+忽略ESC [K。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

运行Emacs Shell时可见的ANSI转义序列(这些不是ANSI颜色)

来自分类Dev

运行Emacs Shell时可见的ANSI转义序列(这些不是ANSI颜色)

来自分类Dev

复制终端回滚缓冲区以保留ANSI转义序列,但不预先启动脚本/屏幕

来自分类Dev

转义序列问题-批处理

来自分类Dev

在哪里可以找到由Ctrl键序列发送的终端ANSI代码列表?

来自分类Dev

信号是由孩子处理的,而不是由父进程处理的?

来自分类Dev

在zsh提示中使用ANSI转义序列

来自分类Dev

支持 ANSI 转义序列光标移动

来自分类Dev

较少的css变量,由函数多次执行定义

来自分类Dev

较少-R通过管道处理ANSI彩色文本时不显示颜色

来自分类Dev

显式使用Unicode / ANSI Windows API和让它们由别名处理之间的区别?

来自分类Dev

显式使用Unicode / ANSI Windows API和让它们由别名处理之间的区别?

来自分类Dev

ANSI转义序列保存/恢复光标位置支持

来自分类Dev

ANSI转义码序列“ ESC [> c”是什么?

来自分类Dev

AWK:使用ANSI转义序列的字符串取反

来自分类Dev

如何使用Ansi转义序列更改xterm的颜色?

来自分类Dev

Readline:将ANSI转义序列绑定到密钥

来自分类Dev

ANSI转义码序列“ ESC [> c”是什么?

来自分类Dev

从输出日志文件中排除 ANSI 转义序列

来自分类Dev

汇编语言-转义序列处理子例程

来自分类Dev

文件不是由php中的文件处理创建的

来自分类Dev

为什么不是由Callable接口需要处理异常抛出

来自分类Dev

文件不是由php中的文件处理创建的

来自分类Dev

在现代Windows命令行上启用ansi转义码处理?[C]

来自分类Dev

大多数基本类型的有效二进制序列化

来自分类Dev

关闭由QNetworkAccessManager处理的连接

来自分类Dev

关闭由QNetworkAccessManager处理的连接

来自分类Dev

如何使查找遵循大多数(但不是全部)符号链接?

来自分类Dev

库文件是由ldconfig找到的,但不是由ldd找到的

Related 相关文章

  1. 1

    运行Emacs Shell时可见的ANSI转义序列(这些不是ANSI颜色)

  2. 2

    运行Emacs Shell时可见的ANSI转义序列(这些不是ANSI颜色)

  3. 3

    复制终端回滚缓冲区以保留ANSI转义序列,但不预先启动脚本/屏幕

  4. 4

    转义序列问题-批处理

  5. 5

    在哪里可以找到由Ctrl键序列发送的终端ANSI代码列表?

  6. 6

    信号是由孩子处理的,而不是由父进程处理的?

  7. 7

    在zsh提示中使用ANSI转义序列

  8. 8

    支持 ANSI 转义序列光标移动

  9. 9

    较少的css变量,由函数多次执行定义

  10. 10

    较少-R通过管道处理ANSI彩色文本时不显示颜色

  11. 11

    显式使用Unicode / ANSI Windows API和让它们由别名处理之间的区别?

  12. 12

    显式使用Unicode / ANSI Windows API和让它们由别名处理之间的区别?

  13. 13

    ANSI转义序列保存/恢复光标位置支持

  14. 14

    ANSI转义码序列“ ESC [> c”是什么?

  15. 15

    AWK:使用ANSI转义序列的字符串取反

  16. 16

    如何使用Ansi转义序列更改xterm的颜色?

  17. 17

    Readline:将ANSI转义序列绑定到密钥

  18. 18

    ANSI转义码序列“ ESC [> c”是什么?

  19. 19

    从输出日志文件中排除 ANSI 转义序列

  20. 20

    汇编语言-转义序列处理子例程

  21. 21

    文件不是由php中的文件处理创建的

  22. 22

    为什么不是由Callable接口需要处理异常抛出

  23. 23

    文件不是由php中的文件处理创建的

  24. 24

    在现代Windows命令行上启用ansi转义码处理?[C]

  25. 25

    大多数基本类型的有效二进制序列化

  26. 26

    关闭由QNetworkAccessManager处理的连接

  27. 27

    关闭由QNetworkAccessManager处理的连接

  28. 28

    如何使查找遵循大多数(但不是全部)符号链接?

  29. 29

    库文件是由ldconfig找到的,但不是由ldd找到的

热门标签

归档