You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用less的--hilite-unread选项时,空白行显示回车符^M的问题咨询

使用less的--hilite-unread选项时,空白行显示回车符^M的问题咨询

各位好,我最近遇到了一个less命令的奇怪问题,想向大家请教:

当我查看带有Windows换行符(CRLF)的内容时,如果启用了--hilite-unread选项,空白行里会莫名显示回车符标记^M,但带有文本的行却能正常处理,自动跳过回车符,显示完全正常。

我翻了less的手册,按说明只要CR后面跟着LF,应该是会被当作正常换行处理的。后来我尝试加上--raw-control-chars选项,确实能去掉这些^M标记,但这个选项并不推荐使用,而且会带来一些我不想要的其他效果,所以不想用它。

下面是我做的几个测试:

  1. 不带--hilite-unread的情况,输出正常:
$ printf 'first\r\n\r\nsecond\r\n' | LESS= less --quit-if-one-screen

输出:

first

second
  1. 启用--hilite-unread后,空白行出现^M:
$ printf 'first\r\n\r\nsecond\r\n' | LESS= less --quit-if-one-screen --hilite-unread

输出:

first

^M

second
  1. 同时启用--hilite-unread和--raw-control-chars,输出恢复正常,但这个方案我不想用:
$ printf 'first\r\n\r\nsecond\r\n' | LESS= less --quit-if-one-screen --hilite-unread --raw-control-chars

输出:

first

second

想问问大家,这是less的已知bug吗?还是有什么我没注意到的设置可以调整?目前我只能暂时放弃使用--hilite-unread选项了。

另外还有个有趣的现象:如果内容长到需要滚动,当我往回滚动的时候,那些^M标记就消失了——只有刚打印出来的新行才会显示这个标记。会不会是less在处理新行的时候还没识别到后面跟着的LF?但为什么有文本的行就不会出现这个问题呢?

我的环境是Git for Windows,具体版本:git 2.43.0.windows.1,bash 5.2.21(1),less 643。

备注:内容来源于stack exchange,提问作者Pawel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 10:38:02