例如,当我man ls
在tmux
会话中搜索时,搜索字符串不会突出显示 - 页面会向下跳转,以便搜索字符串按预期位于缓冲区的顶行,但它没有突出显示。
不在tmux
会话中时在同一个 shell 中执行相同的操作会导致搜索字符串突出显示。
我不知道从哪里开始寻找解决这个问题。任何提示表示赞赏。
例如,当我man ls
在tmux
会话中搜索时,搜索字符串不会突出显示 - 页面会向下跳转,以便搜索字符串按预期位于缓冲区的顶行,但它没有突出显示。
不在tmux
会话中时在同一个 shell 中执行相同的操作会导致搜索字符串突出显示。
我不知道从哪里开始寻找解决这个问题。任何提示表示赞赏。
基于Less Colors For Man Pages by Gen2ly
,这是我的手册页及其操作方法:
这是一个外壳,而不是一个网页!
编辑您的~/.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
重新加载您的配置并尝试手册页搜索:
. ~/.bashrc && man ls
修复。问题与screen
$TERM
处理斜体的方式有关。从tmux
常见问题解答:
vim 显示反向视频而不是斜体,而 less 显示斜体(或只是常规文本)而不是反向。怎么了?
这完全符合我的问题。默认情况下使用 by - 基本上,用于$PAGER
显示man
手册页的内容。就我而言,不是突出显示文本,而是显示常规文本。less
man
less
less
发生这种情况的原因:
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
会话,然后重新打开它们)。
该线程已有几年历史,但仍然是最佳搜索结果,因此我正在回答最终对我有用的内容。这是基于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' 的目录)下的所有内容。