vim
当我尝试使用内部打开文件时,tmux
整个窗口都会冻结。我必须用 杀死窗口C-a &
。
这是我的~/.vimrc
设置:
:set autoindent
:set ts=4
:set number
:set shiftwidth=4
:set showmode
:filetype on
:filetype plugin on
:syntax enable
:set mouse=a
和~/.tmux.conf
# I like Ctrl-a as the default hotkey
unbind C-b
set-option -g prefix C-a
# Split window using | and -
unbind %
bind | split-window -h
bind - split-window -v
# Set status bar
set -g status-bg black
set -g status-fg white
set -g status-left ‘#[fg=green]#H’
# Highlight active window
set-window-option -g window-status-current-bg red
# Makes window numbering start from 1, instead of 0
set -g base-index 1
我在 RHEL 中遇到了这个问题。然而,相同的配置在我的 Mac 上运行良好。我想,一切都工作正常,直到我的 RHEL 盒子重新启动并且我尝试从 vi 交换文件中恢复文件。
有想法该怎么解决这个吗?
[编辑]:我尝试ssh
在其他盒子里面tmux
运行vi
。在远程盒子中工作正常!
[稍后添加]按照@jasonwryan的建议,我set -g default-terminal screen-256color
在 的末尾添加了这一行tmux.conf
。这使得像这样的程序less
无法运行。
echo $TERM
tmux 内部是“screen”,tmux 外部是“xterm”。
搜索 $TERM 让我找到https://wiki.archlinux.org/index.php/Tmux,从我添加该行set -g default-terminal "screen-256color"
作为 的第一行tmux.conf
。这使得$TERM
内部 tmux 变为“screen-256color”。但是现在当我vi
在 tmux 中启动时,它显示以下错误:
E558: Terminal entry not found in terminfo
'screen-256color' not known. Available builtin terminals are:
builtin_riscos
builtin_amiga
builtin_beos-ansi
builtin_ansi
builtin_pcansi
builtin_win32
builtin_vt320
builtin_vt52
builtin_xterm
builtin_iris-ansi
builtin_debug
builtin_dumb
defaulting to 'ansi'
看来我已经解决了这个问题。刚刚添加set -g default-terminal xterm
为我的 ~/.tmux.conf 的第一行,它就起作用了!
答案1
我通过添加行解决了这个问题
set -g default-terminal xterm
作为我的 ~/.tmux.conf 的第一行,它工作得很好。
然而正如@jasonwryan 所指出的,TMUX 常见问题解答明确指出:
大多数显示问题都是由于错误的术语造成的!在报告问题之前,请确保 tmux 内部和外部的 TERM 设置正确。
tmux 内部的 TERM 必须是“screen”或类似的(例如“screen-256color”)。在外面,它必须与您的终端匹配......
我只发布这个答案,因为它实际上解决了我的问题。请随时添加您的替代解决方案。
答案2
我刚刚在我必须处理的旧 CentOS 机器上遇到了同样的问题。对我来说,将 tmux 中的 TERM 设置为 xterm 会导致出现其他奇怪的问题。但是,我可以通过set mouse=a
在 .vimrc cf 中注释掉来修复它https://lists.gnu.org/archive/html/screen-users/2005-04/msg00039.html
显然添加set ttymouse=xterm2
到你的 .vimrc 也可以解决这个问题。
对于遇到类似问题的其他人,我建议暂时移动您的 .vimrc 以查看其中是否有问题。