我喜欢将手册页复制到我自己的离线文档中,这样我就可以用自己的笔记突出显示和补充信息。但是,我总是遇到导出的文本在每一行末尾(包括段落中间)都包含换行符的问题。删除不必要的换行符的过程很烦人,也很耗时,我希望找到一种简单的方法,最初导出的信息仅在其适当的位置包含换行符。
我检查了 man 命令手册页,但令人惊讶的是,我并没有找到解决这个问题的方法。我找到的最接近的解决方法是使用“-c”选项,同时将终端窗口拉得尽可能宽,但对于包含长段落的大型手册页来说,这不是一种非常有效的解决方法。
'-c' 选项向我展示的一个有趣的事情是,LF 的位置确实可以通过 man 程序进行修改 — 那么为什么程序不能完全删除不必要的位置呢?是不是我遗漏了一个简单的命令?
提前致谢..
答案1
从您的描述来看,我猜您的文本文件在固定宽度后有换行符,这在对于此宽度来说太小的窗口中看起来会很难看。对吗?如果是这样,您可以使用
cat mytextfile | tr "\n" " " > mynewtextfile
删除所有换行符。程序实际上没有办法决定哪些是“必要的”,哪些不是。
如果您想保留所有可能标记真实段落的双换行符,请尝试以下操作:
cat myfile | tr "\n" "#" | sed s/"#\([^#]\)"/"\1"/g | tr "#" "\n" > mynewfile
...假设文本中没有任何有意义的#(如果是这种情况,可能会使用另一个虚拟字符)。
另一种可能是保存 HTML 版本,例如http://linuxmanpages.com并在适当的程序中编辑它们。
答案2
啊,我找到解决方案了!您需要MANWIDTH
在调用man
命令之前设置环境变量,例如:
MANWIDTH=10000 man ls
这会将列的宽度设置为很宽,以至于不会在段落中间添加换行符。