tmux手册页搜索突出显示

sim*_*ont 29 gnu-screen ansi-escape terminfo terminal-emulator tmux

当我在搜索,例如,man ls而在tmux会议上,搜索字符串不高亮显示-页面跳转下来,让搜索字符串是在缓冲区的顶部线条,符合市场预期,但它并不突出.

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

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

sim*_*ont 19

固定它.问题是screen $TERM处理斜体的方式.来自tmuxFAQ:

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

这完全符合我的问题.该$PAGER使用的manless默认-基本上,man使用less以显示手册页的内容.在我的情况下,less没有突出显示文本,只显示常规文本.

发生这种情况的原因:

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

解决方案是为其创建一个新terminfo文件tmux,让它知道支持斜体.解决方案(在撰写本文时)概述了tmuxFAQ的非常底层.

创建新后terminfo的文件,在tmux:C-b :source-file /absolute/path/to/.tmux.conf(从这个超级用户的问题) -这使tmux重新加载.tmux.conf文件.但是,这对我不起作用,并且仅在重新启动tmux服务器后应用更改(关闭所有tmux会话,然后重新打开它们).

  • 关于将设置应用于正在运行的`tmux`实例:它重新加载并应用配置就好了,问题是已经在Windows中运行的客户端(程序)和`tmux`实例的窗格从`TERM`初始化它们的终端设置他们在启动时读取的环境变量,虽然新启动的客户端将在他们的环境中看到新的终端名称,那些已经运行的终端名称无法获取它们并且他们的设置已更新 - 缺少重新启动运行它们(以及它们从中启动的shell,如果有的话). (2认同)

Édo*_*pez 19

基于Less Pages For Man Pages by Gen2ly,这是我的手册页以及如何操作:

预习

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

如何

  1. (可选),我使用的是明天的主题进行的Konsole/Yakuake ;
  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
    
    Run Code Online (Sandbox Code Playgroud)
  3. 重新加载您的配置并尝试手册页搜索:

    . ~/.bashrc && man ls
    
    Run Code Online (Sandbox Code Playgroud)


Chr*_*sty 12

这个帖子已经有几年了,但仍然是最好的搜索结果,所以我正在回答最终为我工作的东西.这是基于tmux常见问题解答.

...但是有关替换-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
Run Code Online (Sandbox Code Playgroud)

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

set -g default-terminal "screen-256color"
Run Code Online (Sandbox Code Playgroud)

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

  • 适合我.我创建了[这一个班轮](https://gist.github.com/stuartcarnie/818d14647cd1a42a4fbbcd689675b8c0),所以我可以快速添加到新服务器 (2认同)