如何在 fish shell 下获取彩色手册页?

如何在 fish shell 下获取彩色手册页?

似乎有一种方法可以让手册页以彩色显示(请参阅这里。它涉及设置与 less 相关的环境变量并将这些定义添加到.bashrc。我尝试在 fish shell 中执行相同操作config.fish,但没有得到彩色输出。

如何在 fish shell 中获取彩色手册页?

答案1

如果您希望仅在查看手册页时添加这些颜色,而不是在 中查看的所有内容中添加这些颜色less,则应该在 的包装函数中设置这些变量,而man不是将它们放在 中config.fish

整个过程是在 创建一个新文件~/.config/fish/functions/man.fish,并在其中定义一个man设置必要环境变量的函数,然后调用原始manusing command,并使用 传入参数$argv

这是我的包装函数版本:

~/.config/fish/functions/man.fish
function man --description "wrap the 'man' manual page opener to use color in formatting"
  # based on this group of settings and explanation for them:
  # http://boredzo.org/blog/archives/2016-08-15/colorized-man-pages-understood-and-customized
  # converted to Fish shell syntax thanks to this page:
  # http://askubuntu.com/questions/522599/how-to-get-color-man-pages-under-fish-shell/650192

  # start of bold:
  set -x LESS_TERMCAP_md (set_color --bold red)
  # end of all formatting:
  set -x LESS_TERMCAP_me (set_color normal)

  # start of standout (inverted colors):
  #set -x LESS_TERMCAP_so (set_color --reverse)
  # end of standout (inverted colors):
  #set -x LESS_TERMCAP_se (set_color normal)
  # (no change – I like the default)

  # start of underline:
  #set -x LESS_TERMCAP_us (set_color --underline)
  # end of underline:
  #set -x LESS_TERMCAP_ue (set_color normal)
  # (no change – I like the default)

  command man $argv
end

答案2

您可以通过以下命令设置配置,

set -x LESS_TERMCAP_mb (printf "\033[01;31m")  
set -x LESS_TERMCAP_md (printf "\033[01;31m")  
set -x LESS_TERMCAP_me (printf "\033[0m")  
set -x LESS_TERMCAP_se (printf "\033[0m")  
set -x LESS_TERMCAP_so (printf "\033[01;44;33m")  
set -x LESS_TERMCAP_ue (printf "\033[0m")  
set -x LESS_TERMCAP_us (printf "\033[01;32m")  

答案3

假设您使用 less 作为寻呼机,请将其输入~/.config/fish/config.fish

set -x LESS_TERMCAP_mb (printf "\e[01;31m")
set -x LESS_TERMCAP_md (printf "\e[01;31m")
set -x LESS_TERMCAP_me (printf "\e[0m")
set -x LESS_TERMCAP_se (printf "\e[0m")
set -x LESS_TERMCAP_so (printf "\e[01;44;33m")
set -x LESS_TERMCAP_ue (printf "\e[0m")
set -x LESS_TERMCAP_us (printf "\e[01;32m")

如果\e[0m您在查看手册页时看到等,请尝试添加此行:

set -x LESS "-R"

答案4

我推荐一款非常好的工具,叫做蝙蝠猫由...提供https://github.com/sharkdp/bat

bat该软件包自 Ubuntu 20.04 版(“Focal”)起可用,自 2021 年 8 月起在 Debian 上可用(Debian 11 - “Bullseye”),其命令batcat带翅膀的猫替代品

来自 git 文档:

man

bat可以man通过设置 MANPAGER环境变量来用作 的彩色分页器:

bash export MANPAGER="sh -c 'col -bx | batcat -l man -p'"

MANROFFOPT="-c"如果遇到格式问题,可能还需要进行设置。

如果你希望将其捆绑在新命令中,你也可以使用 蝙蝠侠

请注意,Manpage 语法是在此存储库中开发的,但仍需要一些工作。

另外,请注意,这将不行使用 Mandocsman 实现。

安装这个bat包

sudo apt install bat

我喜欢 Monokai 主题,因此我将这个命令添加到我的.zshrc

export MANPAGER="sh -c 'col -bx | batcat -l man -p --theme 'Monokai Extended''"

如果你使用fishshell,请将以下行添加到你的~/.config/fish/config.fish文件中:

set -x MANPAGER "sh -c 'col -bx | batcat -l man -p --theme 'Monokai Extended''"

可以通过以下命令打印已安装的颜色主题列表

batcat --list-themes

以下是截图man 3 printf

在此处输入图片描述

相关内容