当我运行时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: <standard input>:1: name expected (got '\ '): treated as missing
这也交叉发布到Manjaro 论坛在这里。
更新:
问题在于zpm-zsh/着色。我认为这样做\man
会忽略该函数,但\
只会忽略别名。删除此插件可以解决问题,但我想了解原因。
答案1
我运行的问题是与env
.
哦我的 zsh 的彩色手册页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
解决方案:
1)不要env
通过grc
使用全局定义的函数来重新定义
2)env
使用以下命令确保不是别名/函数command
function colored() {
command env \
LESS_TERMCAP_mb=$(printf "\e[1;31m") \
[....]
}
function man() {
colored man "$@"
}