man命令输出全是^H in vim

man command output full of ^H in vim

这个问题似乎很难被 google 搜索到答案。

我执行了:

man cp > cp.txt
vim cp.txt

文件中有很多“^H”,可能是退格,如何去掉?

就像我们的大 parents 用他们的打字机一样,man 使用 "backspace" (^H) 来遍历前一个字符并再次键入它以获得 "bold"个字母。

虽然您可以使用简单的 :%s/<C-v><C-h>//g 摆脱那些 ^H,但您会得到许多双字符:

"original
N^HNA^HAM^HME^HE

"result
NNAAMMEE

因此您需要在 ^H:

之前或之后添加字符
:%s/<C-v><C-h>.//g

但是,当您可以直接通过以下方式获得干净的文本文件时,为什么还要经历所有这些麻烦:

$ man cp | col -b > cp.txt

那些特殊的控制字符可能是 ANSI 转义序列,用于为文本添加样式和颜色。 Vim 默认情况下不解析这些内容,但 AnsiEsc plugin 使用 Vim 的隐藏和语法突出显示功能按预期绘制文本。

Vim 附带手册页 reader。将以下内容添加到您的 ~/.vimrc

runtime ftplugin/man.vim

现在您可以 :Man cp 打开 cp 上的手册页。

有关更多帮助,请参阅 :h :Man