В моем 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 различий между двумя наборами функциональных клавиш (с учетом измененных).