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 не перезапустився, і я спробував відновити файл із файлу swap vi.

Будь-які ідеї, як це виправити?

[редагувати]: я спробував sshінший ящик всередині tmuxі працює viтам. Добре працює у віддаленій коробці!


[додано пізніше] За пропозицією @jasonwryan я додав рядок set -g default-terminal screen-256colorнаприкінці tmux.conf. Це заважало таким програмам lessпрацювати.

echo $TERM всередині tmux - це "екран", а зовні 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
Це може бути не пов’язано, але ви повинні встановити правильний термін у tmux зset -g default-terminal screen-256color
jasonwryan

3
Чи можете ви оновити своє запитання вашим $ TERM в tmux і поза ним?
Jasonwryan

1
Поза tmux виконайте 'echo $ TERM'. Всередині tmux сеансу виконайте 'echo $ TERM'.
Джордж М

1
Ви повинні лише встановити свій tmux TERM на похідну екрана: див . FAQ : це призведе до виникнення проблем у напрямку доріжки в іншому випадку ...
jasonwryan

1
Вам слід написати власну відповідь і опублікувати її з тим, що в ній, а потім прийняти її (цілком прийнятно це зробити).
ВісімBitTony

Відповіді:


11

Я вирішив питання, додавши рядок

set -g default-terminal xterm

як перший рядок мого ~ / .tmux.conf, і він працював чудово.

Однак, як @jasonwryan вказував, FAQ TMUX чітко зазначає, що:

Більшість проблем із відображенням пов'язані з неправильним терміном! Перед тим як повідомити про проблеми, переконайтесь, що налаштування TERM є правильними всередині та зовні tmux.

Всередині tmux TERM повинен бути "екраном" або подібним (наприклад, "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.