“par”格式化程序不保留制表符缩进

“par”格式化程序不保留制表符缩进

我正在 Vi 中编写代码并使用文本par格式化程序(类似于fmt,但恕我直言更好)格式化块注释。问题是我无法par保留用于缩进的文字选项卡。格式化程序将它们替换为空格。

显示每行带有初始制表符的文件以及如何par用空格替换这些制表符的示例。该cat -t命令将文字选项卡显示为^I

$ cat -t example.txt
^I# I'd like to reflow
^I# this paragraph while retaining
^I# the initial tabs.  I don't want to end up with
^I# spaces at the start of
^I# these lines.

选项卡消失:

$ par <example.txt | cat -t
        # I'd like to reflow this paragraph while retaining the initial
        # tabs.  I don't want to end up with spaces at the start of
        # these lines.

如何停止par替换缩进?

根据par手册中的建议,我将环境变量设置PARINIT为 cryptic string rTbgqR B=.,?'_A_a_@ Q=_s>|,但我无法确定是否可以修改它以使其按照我想要的方式运行。

答案1

格式化par程序总是将制表符扩展为空格,并且不能被告知执行其他操作。当T字符位于字符串中时,实用程序在每个制表位使用 8 个空格$PARINITpar可以使用以下命令重新插入已删除的制表符缩进,而不是尝试修改工作方式标准unexpand公用事业:

$ par <example.txt | unexpand | cat -t
^I# I'd like to reflow this paragraph while retaining the initial
^I# tabs.  I don't want to end up with spaces at the start of
^I# these lines.

当原始文本缩进多个制表符时,这也适用。

如果没有给出任何参数,该unexpand实用程序将用最大数量的制表符替换每行开头的空白字符,以实现相同的视觉缩进级别。如果缩进级别需要,它还会在制表符后添加空格。

在 Vi 中,可以使用!par|unexpand(前面有适当的寻址)来重新格式化文本。

相关内容