在tmux
会话中搜索,例如 man ls
,搜索字符串不会被高亮显示 - 页面跳转到缓冲区的顶部行,但没有高亮显示搜索字符串。
在没有tmux
会话的情况下,在同一shell中执行相同的操作会导致高亮显示的搜索字符串。
我不知道从哪里开始解决这个问题。任何提示都将不胜感激。
在tmux
会话中搜索,例如 man ls
,搜索字符串不会被高亮显示 - 页面跳转到缓冲区的顶部行,但没有高亮显示搜索字符串。
在没有tmux
会话的情况下,在同一shell中执行相同的操作会导致高亮显示的搜索字符串。
我不知道从哪里开始解决这个问题。任何提示都将不胜感激。
参考 Less Colors For Man Pages 作者 Gen2ly
的方法,下面是我的 man 手册和如何实现:
这是一个Shell,不是网页!
编辑你的 ~/.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
$'\E[01;31m'
是什么意思?我正在尝试在 csh/tcsh shell 中设置此环境变量。 - Kaushal Modiless
在tcsh
上使用这个解决方案获取man
中的颜色,而不是使用转义代码,而是使用tput
。 对于tcsh
,请用<backtick>foo<backtick>替换$(foo)
。 - Kaushal Modiexport LESS_TERMCAP_mb=$'\E[01;31m'
转换为 tcsh
中的 setenv
命令.. 其中的 $
字符令人困惑。 - Kaushal Moditput
方法存在 :) - Kaushal Modi~/.zshrc.local
文件,并包含了对这篇文章的引用。https://github.com/flakrat/dotfiles/blob/master/zsh/.zshrc.local - FlakRat问题已解决。问题与screen
$TERM
处理斜体字的方式有关,来自tmux
FAQ:
vim显示反色而不是斜体字,而less显示斜体字(或普通文本)而不是反色。怎么了?
这正好符合我的问题。通过默认使用less
,man
使用less
来显示手册页面的内容。在我的情况下,less
没有突出显示文本,只显示普通文本。
发生这种情况的原因是:
Screen的terminfo描述缺乏斜体模式,它的替代品是突出模式,但使用urxvt用于斜体的相同转义序列。这意味着寻找斜体字的应用程序(如vim)将找不到它,并且可能会将其替换为反向,而请求突出的应用程序(如less)最终将获得斜体字而不是反向。
解决方案是为tmux
创建一个新的terminfo
文件,让它知道支持斜体字。解决方案在目前写作时(非常非常底部)概述在tmux
FAQ中。
terminfo
文件后,在tmux
中执行以下命令:C-b :source-file /absolute/path/to/.tmux.conf
(参考这个问题)。这个命令应该会使tmux
重新加载.tmux.conf
文件。然而,对我而言这并没有生效,只有在重启tmux
服务器(关闭所有tmux
会话,然后重新打开)后,更改才会应用。tmux
实例:它重新加载并应用配置,但问题在于已经在该tmux
实例的窗口和面板中运行的客户端程序从它们启动时读取的TERM
环境变量初始化其终端设置,而新启动的客户端将在其环境中看到新的终端名称,但是那些已经在运行中的客户端无法获得它并更新其设置——除了重新运行它们(以及它们所启动的 shell(如果有的话))。 - kostix终端'tmux-256color':use=xterm+256setaf的分辨率失败
。在这种情况下,@Christy的解决方案解决了问题。 - sphakka...但说明并不完全清楚何时或在何处替换-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"
less
查看日志时,我仍然看到斜体而不是突出显示/高亮,后来我意识到这是因为我正在使用sudo(因为它们在/var/log下)。要解决问题:~> sudo rsync -rP ~/.terminfo /root/. 发送增量文件列表 .terminfo/ .terminfo/s/ .terminfo/s/screen-256color 1,560 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/3) ~> sudo cp ~/.tmux.conf /root/.
- Christy
TERM
环境变量设置为screen
。由于某种原因,screen
类型的终端在您的系统上不支持高亮显示。我刚刚在我的旧Ubuntu框中使用tmux 1.6和PuTTY进行了尝试,至少这个组合可以正常工作。 - Caspertmux -2
运行 tmux,看看是否能解决问题。 - Casperscreen
会话中得到了高亮字符串,其中$TERM=screen
。运行tmux -2
或tmux -8
似乎没有帮助。 - simont