Проблема с использованием клавиш Ctrl + Arrow в Vim при использовании Byobu с tmux

12

В Vim я установил клавиши Ctrl + Arrow, чтобы пропустить слова. Это прекрасно работает при запуске Vim внутри терминала gnome.

Однако при использовании byobu (tmux) он показывает странное поведение: он удаляет все после курсора.

Для справки, это мои настройки vim:

:inoremap <C-Left> <C-\><C-O>b
:inoremap <C-Right> <C-\><C-O>w
shivams
источник

Ответы:

7

Проблема двоякая. Сначала tmuxпо умолчанию преобразует клавиши управления стрелками из одного типа escape-последовательности в другой. Поэтому специальные клавиши , такие как controlleftпосылаются vimбез модификатора, например, left. Если вы используете, cat -vчтобы увидеть различные escape-последовательности, вы можете увидеть что-то вроде этого

^[OD

против этого (вне tmux):

^[[1;5D

Линия

set-window-option -g xterm-keys on

исправляет этот аспект. Другая часть заключается в том, что tmuxпо умолчанию используется описание терминала для screen. Это описание терминала не описывает клавиши со стрелками управления. Эти записи из базы данных терминала будут наиболее подходящими для VTE (gnome-терминал):

Есть и другие, такие как

который будет выбран автоматически при работе в screenслучае , если соответствующие TERMснаружи были vte, vte-256colorи т.д. tmuxне делает это автоматический отбор; Вы должны изменить его файл конфигурации.

Между прочим, нет записи "screen.xterm", потому что это может помешать некоторым использованиям screen. Там нет конфликта с TERM=xterm-new.

Если у вас есть терминальная база данных по умолчанию (минимальная), такая как ncurses-baseв Debian, у вас ее может не быть. Более распространенным было бы то xterm-256color, что достаточно близко для использования с vim и tmux.

Например, если я добавлю это в свой .tmux.confфайл, он будет вести себя так, как вы ожидаете в vim:

set -g default-terminal "xterm-256color"

Дальнейшее чтение:

Томас Дики
источник
Хммм ... Это работает :) Но только частично. Только Control+ Leftработает; Control+ Rightнет. Я проверю и обновлю позже.
Шивамс
1
У вас могут быть какие-то другие обязательства, мешающие контролю + право (учитывая детали, я могу предложить совет).
Томас Дики
Спасибо за предложение :) Я немного исследовал и обнаружил, что действительно некоторые другие сочетания клавиш вызывают помехи. Например, на моем Mac это работает нормально, а в Linux (с использованием Guake) - нет. Тем не менее, я не на станции и не могу получить доступ к своему Linux. Я буду обновлять, когда я решу проблему.
Шивамс
@ Томам Дики: Тем временем, я принимаю ваш ответ, поскольку он действительно решает проблему.
Шивамс
@ThomasDickey Я просто хотел бы сказать: «Go raibh míle maith agat», что на ирландском языке буквально переводится как «Пусть у вас будет тысяча хороших вещей». Большое спасибо за этот ответ. Ты звезда.
Роб
2

Отсюда вы можете отменить привязку комбинации клавиш в бёбу:

Создайте файл ~/.byobu/.tmux.confс помощью (или добавьте, если файл существует):

set-window-option -g xterm-keys on

Затем добавьте следующее ~/.byobu/keybindings.tmux:

unbind-key -n C-Left
unbind-key -n C-Right
user1794469
источник
Это не работает Однако это дало мне солидное преимущество. Я постараюсь последовать примеру и найти решение. Спасибо :)
Шивамс