30

例如,当我man lstmux会话中搜索时,搜索字符串不会突出显示 - 页面会向下跳转,以便搜索字符串按预期位于缓冲区的顶行,但它没有突出显示。

不在tmux会话中时在同一个 shell 中执行相同的操作会导致搜索字符串突出显示。

我不知道从哪里开始寻找解决这个问题。任何提示表示赞赏。

4

3 回答 3

21

基于Less Colors For Man Pages by Gen2ly,这是我的手册页及其操作方法:

预览

这是一个外壳,而不是一个网页! 手册页中的自定义搜索突出显示

如何

  1. (可选)我正在为Konsole/Yakuake使用Tomorrow 主题
  2. 编辑您的~/.bashrc ~/.zshrc等以添加:

    # Colored man pages: http://linuxtidbits.wordpress.com/2009/03/23/less-colors-for-man-pages/
    # Less Colors for Man Pages
    export LESS_TERMCAP_mb=$'\E[01;31m'       # begin blinking
    export LESS_TERMCAP_md=$'\E[01;38;5;74m'  # begin bold
    export LESS_TERMCAP_me=$'\E[0m'           # end mode
    export LESS_TERMCAP_se=$'\E[0m'           # end standout-mode
    export LESS_TERMCAP_so=$'\E[38;5;016m\E[48;5;220m'    # begin standout-mode - info box
    export LESS_TERMCAP_ue=$'\E[0m'           # end underline
    export LESS_TERMCAP_us=$'\E[04;38;5;146m' # begin underline
    
  3. 重新加载您的配置并尝试手册页搜索:

    . ~/.bashrc && man ls
    
于 2014-03-05T15:51:31.087 回答
19

修复。问题与screen $TERM处理斜体的方式有关。从tmux常见问题解答

vim 显示反向视频而不是斜体,而 less 显示斜体(或只是常规文本)而不是反向。怎么了?

这完全符合我的问题。默认情况下使用 by - 基本上,用于$PAGER显示man手册页的内容。就我而言,不是突出显示文本,而是显示常规文本。lessmanlessless

发生这种情况的原因:

Screen 的 terminfo 描述缺少斜体模式,并在其位置具有突出模式,但使用与 urxvt 用于斜体的相同转义序列。这意味着寻找斜体的应用程序(如 vim)将找不到它,并且可能会转而取而代之,而要求突出的应用程序(如 less)最终会以斜体而不是反向结束。

解决方案是为 制作一个新terminfo文件tmux,让它知道支持斜体。tmux(在撰写本文时) FAQ的非常非常底部概述了该解决方案。

创建新terminfo文件后,在tmux: C-b :source-file /absolute/path/to/.tmux.conf(from this SuperUser question ) - 这应该重新tmux加载.tmux.conf文件。但是,这对我不起作用,并且更改仅在重新启动tmux服务器后应用(关闭所有tmux会话,然后重新打开它们)。

于 2012-05-12T11:23:27.087 回答
13

该线程已有几年历史,但仍然是最佳搜索结果,因此我正在回答最终对我有用的内容。这是基于tmux FAQ

...但是关于何时或何处替换 -256color 字符串的说明并不完全清楚。我将 gnome-terminal (v 3.16.2) 与 tmux 一起使用,这对我有用:

$ mkdir $HOME/.terminfo/
$ screen_terminfo="screen-256color"
$ infocmp "$screen_terminfo" | sed \
  -e 's/^screen[^|]*|[^,]*,/screen-256color|screen with italics support,/' \
  -e 's/%?%p1%t;3%/%?%p1%t;7%/' \
  -e 's/smso=[^,]*,/smso=\\E[7m,/' \
  -e 's/rmso=[^,]*,/rmso=\\E[27m,/' \
  -e '$s/$/ sitm=\\E[3m, ritm=\\E[23m,/' > /tmp/screen.terminfo
$ tic /tmp/screen.terminfo

并告诉 tmux 在 ~/.tmux.conf 中使用它:

set -g default-terminal "screen-256color"

注意:我在没有 -256color 的情况下尝试过一次,因为它不起作用(仍然看到斜体而不是突出显示),我必须在 infocmp 工作之前删除 .terminfo 目录(另一个名为 's' 的目录)下的所有内容。

于 2015-07-06T15:35:10.300 回答