Проблема з використанням клавіш 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

Відповіді:


7

Проблема двояка. По-перше, tmuxза замовчуванням перетворює клавіші-стрілки управління з одного типу послідовності втечі в інший. Тому спеціальні клавіші , такі як controlleftнадсилаються vimбез модифікатора, наприклад, left. Якщо ви cat -vбачите різні послідовності втечі, ви можете побачити щось подібне

^[OD

проти цього (поза tmux):

^[[1;5D

Лінія

set-window-option -g xterm-keys on

виправляє цей аспект. Інша частина полягає в тому, що tmuxза замовчуванням використовується опис терміналу для screen. Цей опис терміналу не описує клавіші управління. Ці записи з бази даних терміналів були б найбільш підходящими для VTE (gnome-terminal):

Є й інші, такі як

який буде обраний автоматично при роботі в 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. Я оновлю, коли вирішу проблему.
шивам

@Thomam Dickey: Тим часом я приймаю вашу відповідь, оскільки вона справді вирішує проблему.
шивам

@ThomasDickey Я просто хотів би сказати: "Go raibh míle maith agat", що ірландською мовою буквально перекладається як "Нехай у тебе є тисяча добрих речей". Дуже дякую за цю відповідь. Ти зірка.
Роб

2

Звідси ви можете від’єднати комбінацію клавіш у byobu:

Створіть файл за ~/.byobu/.tmux.confдопомогою (або додайте, якщо файл існує):

set-window-option -g xterm-keys on

Потім додайте наступне до ~/.byobu/keybindings.tmux:

unbind-key -n C-Left
unbind-key -n C-Right

Це не працює. Однак це дало мені солідний результат. Я спробую дотримуватися керівництва і придумати якесь рішення. Дякую :)
шивам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.