Карты клавиш Vim действуют странно в urxvt
Недавно я начал использовать & 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
правильно отображать ключи?
Из описания проблемы вы, вероятно, не заметили, что ключевые определения в 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, но это другая проблема).
В 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