Карты клавиш Vim действуют странно в urxvt

99
12

Недавно я начал использовать & favor urxvt из-за его огромного количества опций и из-за функции прозрачности.

К сожалению, некоторые ключевые сопоставления в Vim не работают в urxvt.

Например, я отобразил Ctrl + Up/Down и Shift + Up/Down до 5 соответственно 10 строк вверх/вниз или Ctrl + Left/Right на 1 слово влево/вправо.

Эти команды перемещения работают без каких-либо проблем в xterm, но они отказываются работать в urxvt: они переключаются в режим вставки и вставляют a, b, c или d качестве входа в мой vim.

Почему это происходит?

Я также использую zsh качестве оболочки и отображает Ctrl + Left/Right чтобы переместить 1 слово влево/вправо в zsh: это также перестало работать в urxvt (пока все еще работает в xterm).

Как я могу заставить urxvt правильно отображать ключи?

спросил(а) 2017-01-17T11:14:00+03:00 3 года, 8 месяцев назад
1
Решение
70

Из описания проблемы вы, вероятно, не заметили, что ключевые определения в urxvt отличаются от xterm. Если вы специально не настроили urxvt, его специальные клавиши (cursor- и клавиши клавиатуры) отправляют разные escape-последовательности, чем xterm, когда вы изменяете те, у которых есть shift, control, alt.

Вы можете использовать escape-последовательности, которые посылает urxvt, или вы можете использовать функцию keysym для настройки urxvt для отправки сопоставимых управляющих последовательностей. Эта функция была введена rxvt и расширена с помощью urxvt, чтобы вы могли указать модификаторы (shift, control и т.д.), keysym вы, возможно, захотите ограничить keysym:

keysym.sym: строка
Компилировать оборки: связать строку с keysym sym. Промежуточное имя ресурса keysym. не могут быть опущены.

Формат sym - это "(modifiers-) ключ", где модификаторы могут быть любой комбинацией ISOLevel3, AppKeypad, Control, NumLock, Shift, Meta, Lock, Mod1, Mod2, Mod3, Mod4, Mod5 и сокращенно I, K, C, N, S, M, A, L, 1, 2, 3, 4, 5.

Это "компиляция излишеств" - это намек на то, что это дополнительная функция. Однако большинство пакетов, похоже, включают все свои параметры (кроме случаев, когда они конфликтуют). Так что это, вероятно, доступно вам.

Там обзор темы (escape-последовательностей) в ncurses FAQ Как я могу использовать shift- или модификаторы управления? (vim, кстати, не использует ncurses или информацию о модификаторе в базе данных терминала - это приложение termcap, но это другая проблема).

ответил(а) 2017-01-18T02:22:00+03:00 3 года, 8 месяцев назад
57

В vim вы можете:

set t_ku=^[OA
set t_kd=^[OB
set t_kr=^[OC
set t_kl=^[OD

(Чтобы получить ^[OA вы нажимаете ctrl-v затем up)


Я тоже использую urxvt, потому что это быстро, я не использую функцию прозрачности. В urxvt вы можете задать опцию keysym.sym: action read man page для более подробной информации.

предложение

    Если вы используете vim, используйте vim motion, ctrl-U/D/F/B или wWeEbB.. Вам вообще не нужны клавиши со стрелками. Например, на моей клавиатуре, нажимая клавиши со стрелками, я должен нажать дополнительную клавишу Fn.. слишком дорого, и мои пальцы должны покинуть родину.

    В терминале я предлагаю вам привыкнуть к emacs-binding для редактирования командной строки, ваше слово будет прыгать: alt-b (back) and alt-f(forward) Существует намного больше, очень часто используется: ctrl-f, ch, cw, a-w,cb,cu,ck,a-. etc..... ctrl-f, ch, cw, a-w,cb,cu,ck,a-. etc..... Также мужчина не должен забывать о c-xc-e

ответил(а) 2017-01-17T13:04:00+03:00 3 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема