Выполненный cat
в tmux
и нажмите рассматриваемые клавиши для обнаружения управляющих кодов, которые они генерируют. Для меня это дает ^[[D
и ^[[C
. Затем просто отобразите те управляющие коды непосредственно.
nnoremap ^[[D gT
nnoremap ^[[C gt
где ^[
символ ESC, который можно вставить путем нажатия <CTRL-v><ESC>
в энергии.
Установка Does set t_Co=256
в Вашем ~/.vimrc помогают вообще? Это - просто настройка цветов, но может помочь очистить некоторые проблемы.
Вы могли повторно отобразиться ctrl+Arrow
ключи в Вашем ~/.vimrc также...
Править: Вы пробовали ctrl+Arrow
на сессии экрана GNU? Я думаю это, возможно, Ваша проблема.
Существует несколько уровней конфигурации, которая должна быть настроена правильно для лучшей функциональности.
xterm-256color
). terminfo запись базы данных, определенная ТЕРМИНОМ переменная среды, говорит tmux, как распознать последовательности для измененных клавиш со стрелками (пользовательские возможности {kUP
,kDN
,kRIT
,kLFT
}{,3
..7
}).Настройте tmux для генерации последовательностей. Установите xterm-keys
опция сессии к on
так, чтобы tmux генерировал свою собственную последовательность xterm-стиля, когда он получит последовательность, которую определяет его ТЕРМИН. В Вашем ~/.tmux.conf
:
set-option -g xterm-keys on
screen
- основанный ТЕРМИН внутри tmux (например. screen-256color
). Это говорит программы, работающие внутри tmux, как управлять терминалом tmux (ре) эмуляция и какие ответы они должны ожидать от tmux.К сожалению, screen
- базирующиеся terminfo записи базы данных часто не определяют последовательностей для измененных клавиш со стрелками (т.е. они не могут иметь kUP
, и так далее), таким образом, программы, работающие внутри tmux, не могут знать для ожидания таких последовательностей. Необходимо будет вручную настроить любые программы, что Вы хотите распознать эти ключи. В Vim можно вставить это Ваш ~/.vimrc
:
if &term =~ '^screen'
" tmux will send xterm-style keys when xterm-keys is on
execute "set <xUp>=\e[1;*A"
execute "set <xDown>=\e[1;*B"
execute "set <xRight>=\e[1;*C"
execute "set <xLeft>=\e[1;*D"
endif
Можно хотеть использовать варианты без x
(т.е. <Up>
вместо <xUp>
, и так далее), если Вы находите то использование x
- вариант заставляет Ваши нормальные клавиши со стрелками прекращать работать.
Преимущество определения ключей как это состоит в том, что Вы не должны отображать каждую из комбинаций модификатора отдельно (Сдвиг, Управление, Contol+Shift, Meta, Meta+Shift, Meta+Control, Meta+Control+Shift); *
заставляет специальную интерпретацию обрабатывать все связанные последовательности (см. :help xterm-modifier-keys
).
Затем можно отобразить ключи вместо их трудно кодированных последовательностей:
nnoremap <C-Right> gt
nnoremap <C-Left> gT
Как объяснено здесь, отключите Стирание цвета фона (BCE) путем очистки t_ut
терминальная опция (выполненный :set t_ut=
в Vim и затем нажимают Control+L для обновления дисплея терминала) так, чтобы цветовые схемы работали правильно, когда Vim используется внутри tmux и экран GNU.
Таким образом, можно сохранить Ваш TERM
значение как xterm-256color
для надлежащего ключевого обнаружения, также получая надлежащую цветовую схему Vim, представляющую также!:-)