当我运行man [program]时,手册页文本将输出在终端上(一个la cat,没有提供交互性的寻呼机),而不是在less中打开手册页文件(这样您就可以滚动、搜索等等):
➜ man git commit
GIT-COMMIT(1) Git Manual GIT-COMMIT(1)
NAME
git-commit - Record changes to the repository
SYNOPSIS
[...the rest of the man page]我已经验证了echo $PAGER返回less。运行man -D -P less [program]仍然输出到终端“就像cat做的”,而不提供滚动或搜索等功能,就像less通常所做的那样。
使用调试标志-d,man表示"using /usr/bin/less as pager“。我对正在发生的事感到不知所措。
其他有用信息:
➜ env | grep LESS
LESS=-R -M
LESS_TERMCAP_mb=
LESS_TERMCAP_md=
LESS_TERMCAP_me=
LESS_TERMCAP_so=
LESS_TERMCAP_se=
LESS_TERMCAP_us=
LESS_TERMCAP_ue=
➜ echo $TERM
xterm-256color我只收到一个程序错误。我不认为这是直接相关的,但有关这方面的细节,请参阅这个GH问题。tl;dr,出现的错误是troff: :1: name expected (got '\ '): treated as missing
这也是交叉张贴到曼吉罗论坛在这里。
问题在于zpm-zsh/着色。我以为做\man会忽略函数,但是\只忽略别名。删除这个插件可以解决这个问题,但我想了解其中的原因。
发布于 2020-01-18 20:45:55
我运行的问题是与env的命名空间匹配问题。
我的彩色手册在设置变量时使用env:
function colored() {
env \
LESS_TERMCAP_mb=$(printf "\e[1;31m") \
LESS_TERMCAP_md=$(printf "\e[1;31m") \
LESS_TERMCAP_me=$(printf "\e[0m") \
LESS_TERMCAP_se=$(printf "\e[0m") \
LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
LESS_TERMCAP_ue=$(printf "\e[0m") \
LESS_TERMCAP_us=$(printf "\e[1;32m") \
PAGER="${commands[less]:-$PAGER}" \
_NROFF_U=1 \
PATH="$HOME/bin:$PATH" \
"$@"
}
function man() {
colored man "$@"
}我还使用了另一个插件zpm-zsh/着色,它将env通过grv (通用着色器)路由为一个单独的函数,名为env:
function env () {
=grc --colour=auto env "$@"
}不管出于什么原因,grc做了一些man不喜欢的事情。
通过grc重新定义env(
command确保env不是别名/函数
function colored() {
command env \
LESS_TERMCAP_mb=$(printf "\e[1;31m") \
[....]
}
function man() {
colored man "$@"
}https://unix.stackexchange.com/questions/562787
复制相似问题