Vim не справляется с tmux

введите описание изображения здесь

NERDTree не работает в сеансе tmux, как показано на рисунке. Та же проблема возникает при разделении окон. Но теперь я использую powerline. На этот раз статус Vim меняется (на картинке см. Среднюю часть строка состояния) в tmux. Что случилось?


person Vysakh Sreenivasan    schedule 04.05.2013    source источник
comment
Powerline неверен. Вы пробовали его систему отслеживания проблем?   -  person romainl    schedule 04.05.2013
comment
Система отслеживания проблем? Вы говорите, что проблема с Powerline - другая? Я думал, что странное поведение взаимосвязано: каждый раз, когда я разделяю экран и переключаюсь на определенный экран, линии перекрываются и возникает беспорядок. Происходит только в сеансе tmux. Я не думаю, что это проблема с электросетью.   -  person Vysakh Sreenivasan    schedule 04.05.2013
comment
Что у вас $TERM внутри и вне tmux?   -  person romainl    schedule 04.05.2013
comment
@romainl Powerline не ошибается. Попробуйте установить строку состояния на количество a, которое больше ширины вашего экрана (let &stl=repeat('a', &columns*2)). Вы увидите строку состояния, начинающуюся с <aaaaa и заканчивающуюся aaa. Не строка состояния на двух строках, как показано выше.   -  person ZyX    schedule 05.05.2013
comment
@romainl Т.е. если линия электропередачи превысит доступную ширину, вы просто увидите усеченную строку состояния. Но если vim считает, что доступное вертикальное пространство шире, то на самом деле вы увидите изображение выше. Powerline также принимает ширину от vim.   -  person ZyX    schedule 05.05.2013
comment
Другой возможный источник проблем - vim думает, что некоторые символы занимают меньше отображаемых ячеек, чем они фактически занимают (возможно, например, если параметр &ambiwidth в vim и аналогичный параметр в эмуляторе терминала равны single и (эквивалент) double соответственно). Но здесь это не так: с двойной шириной амбиции в эмуляторе терминала вы увидите промежутки между жесткими разделителями линии питания (закрашенные стрелки) и одним из соседних сегментов с одной стороны.   -  person ZyX    schedule 05.05.2013
comment
Проверка $ echo $COLUMNS в tmux и :echo &columns в Vim может быть полезна.   -  person romainl    schedule 05.05.2013
comment
Если я правильно прочитал, на скриншоте есть две панели tmux (есть два активных окна vim, которые должны быть невозможны). Поскольку то же самое не происходит со строкой состояния tmux ниже, у вас, вероятно, действительно возникнут проблемы с определением ширины символов линии питания из области частного использования (стрелки, символ ветки, LN). Но я не могу сказать, в чем проблема и кто виноват: все проблемы такого рода, с которыми я сталкивался, всегда приводили к тому, что все символы Powerline (не) работали одинаково, никогда не являлись частью символов рядом с середина.   -  person ZyX    schedule 05.05.2013


Ответы (1)


Я придумал решение спустя долгое время, глядя на репозиторий точечных файлов в github. Это была всего одна строка кода, которая упростила обмен данными между Vim и Tmux.

В файле .tmux.conf добавьте эту строку

set-window-option -g utf8 on
person Vysakh Sreenivasan    schedule 05.08.2013
comment
Спасибо. Моя работала отлично, пока однажды не начала вести себя так же. Это устранило проблему. Шрифты Powerline отображаются некорректно, но, по крайней мере, Vim снова ведет себя нормально. - person russoue; 04.11.2014
comment
Отлично :) Чтобы исправить шрифты powerline, вам нужно установить несколько библиотек в зависимости от вашей ОС, может быть, это поможет github.com/Lokaltog/powerline-fonts - person Vysakh Sreenivasan; 04.11.2014
comment
Это свидетельство долголетия vim. Решение на 3+ года все еще работает. Это решение не сработало для меня, пока я не перезапустил свой терминал. - person Isaac Pak; 04.01.2017