1

Я хотел бы изменить escape-последовательности, используемые некоторыми ключами в моем терминале. Моя цель - определить пользовательские сопоставления в Vim (терминальная версия).

Далее в качестве примера я использую Shift-Space, но я бы предпочел, чтобы предлагаемое решение было универсальным.

Мой текущий терминал (gnome-терминал) использует простой пробел в качестве escape-последовательности для shift-space, что можно увидеть, набрав ctrl-v shift-space. Быстрая проверка с истинным xterm показывает то же поведение. Мне бы хотелось, чтобы комбинация клавиш Shift-Space генерировала другую escape-последовательность (например, ту из Shift-F30, которую я бы никогда не использовал).

Итак, как мне это сделать? И действительно ли это хорошая идея? Дайте мне знать, если есть лучшие альтернативы ...

Примечание: я знаю, что это только часть проблемы: после того, как терминал отправит правильную escape-последовательность для моих ключей, мне все равно нужно научить Vim, что это значит. Но я думаю, что знаю, как с этим справиться.

1 ответ1

0

Я начал этот ответ, пытаясь дать вам решение только для части Vim. После прочтения этой StackOverflow страницы, кажется , что реализация проклятий Vim для терминала нет способа дифференциации space и shift-space , если ругань не получить libtermkey поддержки и вашего терминал поддержки надлежащего <CSI> последовательности.

Обычно и в зависимости от ситуации можно ввести что-то подобное в файл ~/.vimrc чтобы получить отображение:

nmap <S-space> :SomeValidVimCommandHere<CR>

или же

inoremap <S-space> <S-F30>

Я не проверял это, чтобы увидеть, получила ли curses необходимую поддержку, поэтому вы можете попробовать выполнить сопоставление и посмотреть, сработает ли оно. Если это нормально или нет, я понятия не имею, но я хотел бы отметить, что некоторые сопоставления будут генерировать неопределенное поведение. Примером является клавиша escape. Несколько лет назад я пытался отменить определение клавиши escape, чтобы она больше не использовалась, потому что я хотел заставить себя прекратить использовать клавишу escape и вместо этого использовать комбинацию jk чтобы получить тот же результат. Это создало для меня "случайное" поведение, которое я не мог понять. Из того, что я понимаю, это потому, что управляющий ключ глубоко встроен в образ действий Vims. Это может относиться к отображению, которое вы предлагаете сделать, но у меня нет доказательств того, что это так.

Я надеюсь, что это пролило некоторый свет на вашу проблему.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .