我可以在“less”中设置(输入和输出)字符集吗?

我可以在“less”中设置(输入和输出)字符集吗?

我可以告诉less以 UTF-8 输出字符:

export LESSCHARSET=UTF-8

但随后它也会尝试以 UTF-8 格式读取文件。

我可以告诉它以 ISO-8859-2 (latin2) 的形式读取文件,但将它们显示为 UTF-8,就像我在 和 设置中所做vimenc那样fenc

答案1

看起来这是不可能的。作为部分解决方法,您可以iconv通过以下方式用作输入预处理器。

  1. 创建以下可执行脚本,例如less_conv.sh
    #!/bin/sh
    iconv -f $IN_ENC -t $OUT_ENC $1
    
  2. 定义并导出LESSOPEN变量:
    导出 LESSOPEN="|-less_conv.sh %s"
  3. 调用less方式如下:
    IN_ENC=latin2 OUT_ENC=utf8 少一些文件
    您还可以设置您的首选值:
    导出 IN_ENC=latin2
    导出 OUT_ENC=utf8
    少一些文件

|中的管道字符LESSOPEN节省了对临时中间文件的需要。破折号在读取标准输入-时启用此预处理器。less

限制:
即使您点击F或,预处理器也仅被调用一次R,因此您将无法在增长文件或“流式传输”标准输入上使用此解决方法。

相关内容