在 中tmux
,我的终端的vim
配色方案在通过 连接后立即与远程服务器断开连接后发生变化ssh
。确切的命令序列是:
tmux
vim <my_file> # vim colors correct
ssh <my server>
exit # Immediately disconnect
vim <my_file> # vim colors WRONG
笔记tmux
:和之间没有观察到差异tmux -2
。我也没有看到tmux info
ssh 连接之前和之后有什么区别。
我无法确定为什么通过 连接/断开连接会影响本地机器上的运行ssh
方式。这种情况只发生在 上。在我的普通终端上不会发生这种情况。vim
tmux
颜色比较:
设置信息:
平均能量损失.zshrc
" Vundle Start
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
Plugin 'VundleVim/Vundle.vim'
Plugin 'morhetz/gruvbox'
call vundle#end()
filetype plugin indent on
" Vundle END
syntax on
colorscheme gruvbox
set background=dark
(添加set t_Co=256
似乎.vimrc
没有效果)
.tmux.conf
set-option -g default-shell /usr/local/bin/zsh
set -g default-terminal "screen-256color"
答案1
这可能是由于ANSI 转义序列在远程服务器的提示中,这也许是将终端置于某种模式,并且在完成后不会将其重置回正常状态。
很难说清楚究竟哪个序列导致了这种情况...也许ESC [ 2m
是“低强度模式”?
这种情况只发生在内部的原因tmux
是 tmux 实现了其自己的大部分转义序列,因此有时它的行为会与终端本身不同。
为了进一步解决此问题,请首先尝试捕获连接到远程服务器时获得的转义序列。您可以使用脚本(1)命令来做到这一点:
$ script
$ ssh <my_server>
my_server$ exit
$ exit
Saved output in file `typescript`
$
您需要一个额外的命令exit
来停止脚本会话。字符将保存在文件中typescript
。
然后您可以使用以下命令检查文件的内容:
$ cat -v typescript
这将以可打印的方式显示转义序列,这样它们就不会被激活,而您可以看到它们。ESC 键显示为^[
。因此,如果您看到一个序列^[[2m
,那就是我上面提到的“低强度”序列。
即使这不是真正触发此问题的因素,您也可以编辑您的问题,使用您看到的确切转义序列来更新它,这将有助于我们缩小触发此特定行为的范围。
如果它确实是由远程服务器的转义序列引起的,那么请检查该机器上的提示,看看是否是它发送了这些特定序列。(在 bash 中,查看$PS1
和可能$PROMPT_COMMAND
。)您可能需要修复它们以停止使用该特定序列,或者重置设置或在完成后撤消特定序列的效果。
更新:在使用上述步骤诊断问题后,我们注意到问题的原因是服务器端.zshrc
文件gruvbox_256palette_osx.sh,执行时会修改终端的调色板。
服务器端已$TMUX
取消设置,因此gruvbox
脚本未使用正确的转义序列,导致调色板不同步并产生此处观察到的颜色差异。