![UTF-8 字符在 tmux 中无法正确显示](https://linux22.com/image/1118917/UTF-8%20%E5%AD%97%E7%AC%A6%E5%9C%A8%20tmux%20%E4%B8%AD%E6%97%A0%E6%B3%95%E6%AD%A3%E7%A1%AE%E6%98%BE%E7%A4%BA.png)
我♪
在主题中使用字符zsh
作为提示。但在 tmux 中,我的提示行为异常,显示多余的空格,如下所示:
♪ ~ I can type from here
♪ ~ Instead of here like in zsh, and sometimes when I do stuff like cd
♪ ~ cd ~
♪ ~ cdcd /
♪ ~ ^^These 2 chars just show up but are not actually part of command and not delete-able
我最近发现我可以通过 来将 tmux 编码设置为 utf8 set-window-option -g utf8 on
。这样做后,空格问题就消失了,但♪
字符变为了_
。我该如何♪
恢复tmux
?
我的 zsh 主题:
PROMPT='%{$fg_bold[cyan]%} ♪ %{$fg[blue]%}%c%{$fg_bold[blue]%}$(git_prompt_info)$(git_remote_status)%{$fg_bold[blue]%} % %{$reset_color%}'
答案1
使用u
flag 启动 tmux 可以解决这个问题
tmux -u
我在 zshrc 中创建了 tmux 的别名
alias tmux='tmux -u'
答案2
感谢您的标记部分,但我们也可以将以下内容设置为配置文件 rc(例如.zshrc
或bashrc
)文件
export LC_ALL=en_IN.UTF-8
export LANG=en_IN.UTF-8
设置此选项后,无需使用 -u 标志。
答案3
如果你使用不同的 shell,比如“fish”或者 sh,你可以改变 tmux 的环境变量
$ tmux setenv 'LC_ALL' 'en_IN.UTF-8'
$ tmux setenv 'LANG' 'en_IN.UTF-8'
$ tmux show-environment
DISPLAY=:0.0
-KRB5CCNAME
LANG=en_IN.UTF-8 <-enviroment variable
LC_ALL=en_IN.UTF-8
SSH_AGENT_PID=1269
-SSH_ASKPASS
SSH_AUTH_SOCK=/tmp/ssh-tGUWJ874wmOG/agent.1193
-SSH_CONNECTION
VIRTUAL_ENV=/home/Jai_BholeNath/.tmux.conf
-WINDOWID
XAUTHORITY=/home/Jai_BholeNath/.Xauthority