Vim 不在 tmux 内运行

Vim 不在 tmux 内运行

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 $TERMtmux 内部是“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 以查看其中是否有问题。

相关内容