Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 我用vim检查手册页,有一些奇怪的字符,如何使其正常?_Bash_Shell_Vim_Terminal_Vi - Fatal编程技术网

Bash 我用vim检查手册页,有一些奇怪的字符,如何使其正常?

Bash 我用vim检查手册页,有一些奇怪的字符,如何使其正常?,bash,shell,vim,terminal,vi,Bash,Shell,Vim,Terminal,Vi,我试着用 man ascii | vi - 要使用vim检查ascii手册, 还有一些奇怪的字符,比如“^H” 如何使它正常 编辑: 我想这是因为我的vim或终端配置错误, 因为我试过其他的机器,效果很好,有人帮忙吗?你看到的是用于排版粗体和下划线字符的手册页惯例 ^H字符是“退格”或BS字符,可以在ASCII 8中找到 显示为^H是一种表示“Control-H”的惯例,插入符号是“Control”键的符号,因为这是生成此控制字符的键组合(请注意,“H”是第八个字母,它与手册页ASCII图表

我试着用

man ascii | vi -
要使用vim检查ascii手册,
还有一些奇怪的字符,比如“^H”

如何使它正常

编辑:

我想这是因为我的vim或终端配置错误,
因为我试过其他的机器,效果很好,有人帮忙吗?

你看到的是用于排版粗体和下划线字符的手册页惯例

^H
字符是“退格”或BS字符,可以在ASCII 8中找到

显示为
^H
是一种表示“Control-H”的惯例,插入符号是“Control”键的符号,因为这是生成此控制字符的键组合(请注意,“H”是第八个字母,它与手册页ASCII图表中的BS位于同一行。)

还请注意,
^H
这里是单个字符,而不是单独的
^
H
字符。如果你沿着那条线反复移动
l
运动,你会看到Vim跳过
H
s。Vim也可能以不同的颜色显示它们,以明确它们是特殊字符

你在这里看到的效果被称为超大字符,它来自计算机连接到行打印机而不是屏幕的时代。手册页是在Unix时代早期创建的,使用名为
nroff
(其根甚至早于Unix)的程序进行排版,该程序使用这些序列对文本装饰进行编码,直到今天

因此,使文本加粗(或打印强度更高)的一种方法是打印一封信,去掉一个空格,然后再次打印。在您的示例中,
N^HNA^HAM^HME^HE
用于以粗体打印单词NAME

通常,您将使用知道如何处理这些序列的寻呼机程序。例如,
less
特别支持超粗文本,并且能够使用退格(或回车符,也可以使用它)识别这些序列,并使用终端转义序列将其转换为粗体或下划线文本,这实际上在终端中实现了这些效果

如果使用不同的寻呼机,通常会使用
col-b
从这些序列中删除文本。(详情请参见。)请注意,
col-b
不会在过多字符文本周围生成终端转义序列,它只是删除所有过多字符,保持文本为纯文本,因此任何文本阅读器都可以显示它

(从这个意义上说,
manascii | col-b | vi-
是解决问题的一种可能的方法,但不是最好的方法。)

Vim不支持在作为输入接收的文本中使用过多字符文本或终端转义序列。因此,将Vim用作手册页的方法是去掉所有的多余内容(与
col-b
do相同),然后使用Vim的语法突出显示功能标记手册页部分等。(因此,没有看到在手册页中排版的原始标记,而是将这些标记全部剥离,您实际上看到了手册页的Vim语法配置。)

这是通过
manpager.vim
脚本完成的,该脚本默认随vim一起提供,并注册一个
:manpager
命令,您可以通过
vim+manpager-
访问该命令

您将看到这一部分的作用是,与
col-b
的作用相同。它还正确设置文件类型并启用语法突出显示,将Vim设置为手册页的合适查看器

我认为这是由于我的vim或终端的一些错误配置,因为我在其他机器上尝试了它,并且在那里工作正常

我认为这很可能是由于两个系统之间手册页的排版不同

手册页本身以及用于从源代码生成手册页的管道并不十分统一,您会发现操作系统甚至Linux发行版之间存在差异

在您的其他系统上,所有手册页都可能在创建时使用
col-b
进行剥离,或者
man
将它们剥离到
$MANPAGER
中未设置的内容,甚至它们的源代码中没有任何标记为粗体或下划线的内容

很难说清楚是哪一种(你提到的在另一台机器上工作很好,但没有细节可言),但这将是我的赌注


简言之:要将Vim用作手册页的寻呼机,而不是将其输送到Vim,请将其设置为
man
将作为寻呼机本身运行
Vim

在Vim中,请参阅其中关于如何设置的说明

简而言之,您只需将这一行添加到您的
~/.bash\u配置文件中即可:

export MANPAGER="vim -M +MANPAGER -"
设置并再次登录后,您只需:

$ man ascii

man
将以正确的模式为您启动
vim

尝试
set ft=man
,这应该可以解决问题。
man无论什么| vim+MANPAGER-
@StunBrick这不是回车,这是退格。用于向终端驱动程序发送信号,让其切换到粗体。@phd,好吧,这实际上不是“切换到粗体”;这是一种古老的双重打印技术。虽然有粗体转义码。终端不是打印机,图形终端模拟器(如
xterm
)当他们解释这些代码时,真的会切换字体。这是模拟,而不是打印黑客。嗨,你能检查我的编辑吗,这不是我想要的,我只是想摆脱怪异character@user956609更新了答案以解释
^H
s。