Fmt:重新格式化段落文本

来自泡泡学习笔记
跳到导航 跳到搜索

fmt根据设定的字符数(默认为75个字符)填充和连接行,生成输出行。概要:

fmt [option]… [file]…


fmt从指定的文件参数中读取(如果没有给出文件,则从标准输入读取),并将结果写入标准输出。


零表示成功的退出状态,非零表示失败。


默认情况下,输出保留空白行、单词之间的空格和缩进;不会连接具有不同缩进的连续输入行;输入时展开制表符,输出时引入制表符。


fmt更倾向于在句子结尾处换行,并尽量避免在句子的第一个词之后或最后一个词之前换行。句子的分隔定义为段落的结束,或以'.?!'中的任意一个作为结尾的单词,后面跟着两个空格或行尾,不考虑其中的括号或引号。类似TeX,fmt在选择换行位置之前会先读取整个“段落”;算法是Donald E. Knuth和Michael F. Plass在“Breaking Paragraphs Into Lines”一文中提出的变种算法,发表于Software: Practice & Experience 11, 11(1981年11月),1119-1184页。


该程序接受以下选项。还请参阅通用选项。

'-c'

'--crown-margin'

冠式边距模式:保留段落中前两行的缩进,并使每个后续行的左边距与第二行对齐。


'-t'

'--tagged-paragraph'

标记段落模式:类似于冠式边距模式,但如果段落的第一行与第二行的缩进相同,则将第一行视为一个单行段落。


'-s'

'--split-only'

仅拆分行。不将短行连接成长行。这可以防止代码示例等“格式化”文本被错误地合并。


'-u'

'--uniform-spacing'

统一间距。将单词之间的间距减少为一个空格,并将句子之间的间距减少为两个空格。


'-width'

'-w width'

'--width=width'

将输出行填充至width个字符(默认为75个字符或目标值加10,如果提供了目标值)。


'-g goal'

'--goal=goal'

fmt最初尝试使行的宽度为goal个字符。默认情况下,这比width短7%。


'-p prefix'

'--prefix=prefix'

仅对以prefix(可能前面带有空格)开头的行进行格式化。对于格式化,将去除前缀和任何前置空白,并将其重新附加到每个格式化输出行上。一种用途是对特定类型的程序注释进行格式化,同时保持代码不变。