更新:

更新:

mc(午夜指挥官)中,我可以定义用于查看文件的自定义命令,即:

shell/i/.jpg
    Open=gpicview %f 
    View=file %f | less

该命令file %f必须通过管道传输到寻呼机。我在这里使用less作为例子。

less 的问题是,它在屏幕中间显示一行,并添加以下字符:

~
~
(END)

我只需要最简单、最愚蠢的寻呼机,它除了显示从管道重定向接收到的内容之外什么也不做。类似于cat命令的东西,它不会向它显示的文件添加任何内容。

我可以用什么来代替less

或者我可以配置less隐藏这些特殊字符吗?

更新:

less好的,我已经通过使用选项--tilde和解决了一些问题--clear-screen。但是,less仍然显示(END)在页面底部。

我可以摆脱吗(END)?如果没有配置选项,我如何在源代码中更改它(我可以重新编译 less 包)

less我在 Debian 10 上使用less --version。显示:

less 487 (GNU regular expressions)

答案1

mc有自己的内部寻呼机/查看器,无需调用单独的寻呼机/查看器,您只需要:

type/^JPEG
  View=%view file -- %p

(这里基于文件类型(正则表达式应用于 的输出file)而不是文件名)

请参阅顶部的评论默认值mc.ext用于文档。

JPEG 文件的默认查看器实际上定义为:

type/^JPEG
        View=%view{ascii} /usr/lib/mc/ext.d/image.sh view jpeg
        Include=image
[...]
include/image
        Open=/usr/lib/mc/ext.d/image.sh open ALL_FORMATS
        View=%view{ascii} /usr/lib/mc/ext.d/image.sh view ALL_FORMATS

话虽如此,less有:

-~--tilde
通常,文件末尾之后的行显示为单个波形符 (~)。此选项导致文件末尾之后的行显示为空行。

提示字符串可以用 定义-Ps'prompt'。要删除它,包括(END)末尾的 ,您可以-Ps单独通过,但您仍然会看到:.对于-Ps$'\r'(或者-Ps"$(printf '\r')"对于不支持$'...'ksh93 引号的 shell),这:也是如此。

所以:

type/^JPEG
  View=file -- %p | less -~ -Ps"$(printf '\r')"

如果您想要清除屏幕的内容,运行file命令且其输出不受影响,然后等待某些按键退出,您可以这样做:

type/^JPEG
  View=zsh -c 'echoti clear; echoti civis; file -- "$1"; read -sk; echoti cnorm; echoti clear' zsh %p

(这里还隐藏了光标作为echoti civis奖励)。

您也可以切换回备用屏幕(通常由mc)使用,而less不是停留在主屏幕上并在进入和退出时清除它,-X从而使主屏幕保持不变:

type/^JPEG
  View=zsh -c 'echoti smcup; echoti home; echoti civis; file -- "$1"; read -sk; echoti cnorm; echoti rmcup' zsh %p

(这里不用费心清理它,因为mc会处理它)。

相关内容