Связывание Vim не работает в st

Связывание Vim не работает в st

В моем vimrc у меня настроены сочетания клавиш для навигации по разделенным окнам в vim. Они отлично работают в urxvt, но отказываются работать в st.

У меня есть код

nnoremap <silent> <C-Up> :wincmd k<CR>
nnoremap <silent> <C-Down> :wincmd j<CR>
nnoremap <silent> <C-Left> :wincmd h<CR>
nnoremap <silent> <C-Right> :wincmd l<CR>

Любая помощь будет оценена по достоинству.

решение1

Два эмулятора терминала отправляют разные последовательности символов для клавиш управления/стрелок. Если вы установилиTERMправильно, большинство приложений будут работать.

Это предполагает, что они используют базу данных терминала.

Для справки, два терминала будут сравниваться с использованием

infocmp -x urxvt st |grep 'k[[:upper:]].*5:'

или (в зависимости от предпочтений упаковщика)

infocmp -x rxvt-unicode st |grep 'k[[:upper:]].*5:'

что-то вроде этого:

kDC5: '\E[3\^', NULL.
kDN5: '\EOb', '\E[1;5B'.
kEND5: '\E[8\^', NULL.
kHOM5: '\E[7\^', NULL.
kIC5: '\E[2\^', NULL.
kLFT5: '\EOd', '\E[1;5D'.
kNXT5: '\E[6\^', '\E[6;5~'.
kPRV5: '\E[5\^', '\E[5;5~'.
kRIT5: '\EOc', '\E[1;5C'.
kUP5: '\EOa', '\E[1;5A'.

Клавиши управления/стрелкиkDN5(вниз),kLFT5(левый),kRIT5(справа) иkUP5(вверх).

Достаточно интересно,вимне использует эту информацию изтерминфо. Он использует толькоtermcapинтерфейс (который использует только 2-символьные имена: это не 2-символьные имена). Где-то в вашей конфигурации есть обходной путь для этого, который может мешать интерпретации различных последовательностей символов st. Он может использоватьTERMзначение, но только в жестко запрограммированном, специфическом для приложения виде.

В продолжение комментария,st-256colorкопииxtermповедение для измененных функциональных клавиш (и немодифицированных, конечно), иrxvt-unicodeиспользуетrxvtповедение для измененных функциональных клавиш и т. д. infocmp показывает 138 различий между двумя наборами функциональных клавиш (с учетом измененных).

Связанный контент