修复了tmux中的突出显示


18

因为我开始使用urxvt + tmux作为主要终端,所以我错过了控制台上的突出显示(反向模式)。突出显示部分已替换为斜体字体-乍一看看起来很酷-但是,当我尝试在less。中搜索某些内容时,我找不到成千上万个非斜体中的一个斜体字。

当终端类型设置为xterm*配置文件时(例如,set -g default-terminal "xterm-color".tmux.conf中),这可以正常工作。但是,某些快捷方式无效,应用程序无法获得正确的终端几何形状,在这种情况下...。

Answers:


11

我在tmux的页面上找到了有关它的信息和解决方案:

屏幕的terminfo描述缺少斜体模式,而具有突出模式,但使用与urxvt斜体相同的转义序列。这意味着vim寻找斜体的应用程序(例如)将找不到它,并且可能会替换为原来的位置,而要求突出的应用程序(例如更少)将以斜体而不是反向结束。

[修复1]替换terminfo条目并获得反向+斜体

(每个用户!)

为了使应用程序知道,tmux支持斜体,并使用出色的一个适当的转义序列,你需要创建一个新的terminfo与修改后的文件sgrsmsormsositmritm项:

$ mkdir $HOME/.terminfo/
$ screen_terminfo="screen"
$ infocmp "$screen_terminfo" | sed \
  -e 's/^screen[^|]*|[^,]*,/screen-it|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-it"

如果您的终端支持256色,请使用:

$ screen_terminfo="screen-256color"

而不是“屏幕”。有关更多信息,请参见有关256色支持的FAQ条目。另请注意,tmux仍将在不支持斜体字的终端上显示反向视频。

如果urxvt根本无法显示斜体,请确保已启用支持斜体的字体,例如,添加到〜/ .Xdefaults

urxvt.italicFont: xft:Bitstream Vera Sans Mono:italic:autohint=true

[修复2]只需将斜体控制字符替换为反向

将此终端覆盖添加到〜/ .tmux.conf中

set -g terminal-overrides 'rxvt-unicode*:sitm@,ritm@'

2
修复程序1似乎有效,但是到了2015年,真的很难吗?
user1338062

不幸的是,我找不到这个问题的更好的解决方案+当我在tmux邮件列表上找到它时,我已经停止搜索... :(
andras.tim 2015年

4
好吧,根据tmux常见问题解答, tmux 2.1应该可以解决此问题。所以我想这只是暂时需要的。我个人只是按照OP的要求进行操作,然后设置default-terminalxterm
user1338062

有时这不太好。例如,当您必须与PuTTY兼容时,就不能使用xterm,而只能使用screeen变体。
andras.tim 2015年

1
Fix 1对我有用,但使我日光浴的dircolors消失了;通过添加TERM screen-it到中的终端列表,我可以对其进行修复~/.dircolors
本杰明·W.

4

更快的方法:

set -g terminal-overrides "screen.xterm-new"

无需任何额外的技巧即可工作(并且仍然要注意tmux手册中有关终端类型必须为“屏幕”或其派生类型的警告)。


1
完美地为我工作,例如watch -n10 -d COMMAND args..现在允许检测更改(例如空白!您如何处理斜体空白?)。我认为这应该是公认的答案。注意:如果终端已经打开,请使用TERM=screen.xterm-new; export TERM
Tino

2

我在Arch Linux中运行urxvt。操作者的回答对我没有帮助。这对我有帮助:

https://github.com/tmux/tmux/blob/2.1/FAQ#L355-L383


搜索italic并运行;然后,将其放入tmux配置

set -g default-terminal "tmux"

不要使用“ tmux-256color”。(我想尝试一下,但是对我来说不起作用。)


最后,将其添加到您的rc(.zshrc,.bashrc等)中:

export TERM="xterm-256color"
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.