Vim не работает внутри tmux


14

Когда я пытаюсь открыть файл, используя 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 box не был перезапущен, и я попытался восстановить файл из файла подкачки 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
Возможно, это не связано, но вы должны установить правильный TERM в tmux сset -g default-terminal screen-256color
jasonwryan

3
Можете ли вы обновить свой вопрос с помощью $ TERM в tmux и за его пределами?
Джейсонвриан

1
Вне tmux выполните 'echo $ TERM'. Внутри сеанса tmux выполните 'echo $ TERM'.
Джордж М

1
Вы должны только установить свой tmux TERM на экранную производную: смотрите FAQ : в противном случае это вызовет проблемы в
будущем

1
Вы должны написать свой собственный ответ и опубликовать его, с этим в нем, а затем принять его (это вполне приемлемо).
EightBitTony

Ответы:


11

Я решил проблему, добавив строку

set -g default-terminal xterm

как первая строка моего ~ / .tmux.conf, и он работал нормально.

Однако, как указал @jasonwryan, в часто задаваемых вопросах TMUX четко говорится, что:

Большинство проблем с дисплеем из-за неправильного ТЕРМИНА! Прежде чем сообщать о проблемах, убедитесь, что настройки TERM верны внутри и снаружи tmux.

Внутри tmux TERM должен быть «screen» или аналогичным (например, «screen-256color»). Снаружи он должен соответствовать вашему терминалу ...

Я только отправляю этот ответ, поскольку это фактически решило мою проблему. пожалуйста, не стесняйтесь добавлять свои альтернативные решения.


2

Я просто столкнулся с той же проблемой на старой коробке CentOS, с которой мне пришлось поработать. Для меня установка TERM в tmux на xterm вызвала другие странные проблемы. Однако я смог это исправить, комментируя set mouse=aв моем .vimrc cf https://lists.gnu.org/archive/html/screen-users/2005-04/msg00039.html

Видимо добавляя set ttymouse=xterm2 в ваш .vimrc также может помочь.

Для всех, кто сталкивается с подобными проблемами, я рекомендую временно переместить ваш .vimrc, чтобы увидеть, есть ли причина в этом.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.