如何在 Linux 中证明纯文本的合理性?

Exp*_* HP 20 linux text-editing plaintext alignment

我正在编写一个具有左右对齐段落的纯文本 (.txt) 文档。我手动添加空格,必要时用连字符打破单词,直到线条长度一致。使用我文档中的一个例子,一个像这样的段落:

这些幻球有一些奇怪的特性,有的整齐,有的
有趣,而其他人只是表示懒惰的设计。他们几乎都是
由相同的设计缺陷造成的:游戏对待他们太像普通人了
球。

最终看起来像这样:

这些梦幻球有一些奇怪的特性,
一些整洁,一些有趣,而另一些只是表明-
懒惰的设计。它们几乎都是由
相同的设计缺陷:游戏对他们太像了
常规球。

我怎样才能做到这一点?

添加空格是可以的(不要在行上打断单词),但我需要控制段落的目标宽度(以 # 个字符为单位)。上面的例子证明每行 53 个字符是合理的,但我实际文档中的行宽从 60 到 79 不等。

如果有一个具有这样功能的文本编辑器也很棒。

我已经尝试过:

  • OpenOfficeTeX:它们只是使用格式来更改文本的显示方式。
  • nano的 Justify 命令不算数,因为它实际上并没有使线条宽度一致。

我接受了以下答案,因为它是最适合我的答案。我发现 emacs 填充命令在答案中最容易使用,我很欣赏它如何识别非空白缩进(对于诸如 # 和 // 注释之类的东西)。然而,其他答案都填补了他们自己的领域,我建议其他访问这个问题的人也看看他们。

sml*_*sml 20

你需要par官方网站源代码Repology上的包状态

例如要在 ubuntu 上获取它,请执行以下操作:

sudo aptitude install par
Run Code Online (Sandbox Code Playgroud)

证明text.txt(宽度为 80 个字符),节省newtext.txt

par j1w80 < text.txt > newtext.txt
Run Code Online (Sandbox Code Playgroud)

在 vim 或 gvim 中使用 par:

:set formatprg=par\ j1w80
Run Code Online (Sandbox Code Playgroud)

然后突出显示要格式化的文本并使用该gq命令。

有关更多信息,请参阅 man par


dmc*_*ten 7

fmt 是老式的解决方案

从手册页:

fmt [-cmnps] [-d 字符] [-l num] [-t num] [目标 [最大值] | -宽度| -w 宽度] [文件...]

目标长度默认为 65,最大为比目标长度多 10。或者,可以通过在其前面添加连字符或使用 -w 来指定单个宽度参数。例如,fmt -w 72'',fmt -72'' 和 ``fmt 72 72'' 都产生相同的输出。


Dou*_*ris 5

您可以在 emacs 中使用fill-paragraphor fill-region( fill docs )执行此操作。

您需要传递一个数字前缀参数。默认填充列是 70。

选择要填充的文本并执行M-3 M-x fill-region

我将示例文本的填充列设置为 53 并得到:

These phantasmic balls  have some strange properties,
some   neat,  some   interesting,  and   others  just
indicative of lazy  design. They're almost all caused
by  the same design  flaw: The  game treats  them too
much like regular balls.
Run Code Online (Sandbox Code Playgroud)