Заставить Shift-Tab работать в Vim при работе внутри ConEmu

У меня есть эти сопоставления в моих файлах инициализации для Vim:

nnoremap <S-Tab> <LT><LT>
vnoremap <S-Tab> <LT>gv

намерение состоит в том, чтобы иметь возможность отказаться от SHIFT-TAB. Это прекрасно работает в GVim и VsVim, но не работает в Vim, работающем внутри ConEmu.

Однако табуляция (например, по именам файлов) вперед с помощью TAB и назад с помощью SHIFT-TAB прекрасно работает в командной строке в ConEmu за пределами Vim, поэтому ConEmu должен делать что-то значимое с последовательностью SHIFT-TAB, и я не лучше не нарушать поведение командной строки, если это возможно (хотя, если бы мне пришлось выбирать, я бы выбрал функциональность Vim).

У меня проблемы с определением того, что Вим думает увидеть для этой последовательности клавиш. Если я сделаю CTRL-V SHIFT-TAB, результат Î, Когда я делаю char2nr() на это я получаю 206и действительно, это, кажется, символ Unicode 206. Этот результат 206 подтверждается :echo getchar() и набрав последовательность. Тем не менее, делая map Î <S-Tab> не работает.

Как я могу заставить мои отображения работать?

2 ответа

Решение

Версия 141216 исправляет вашу проблему.

Кстати, ваш обходной путь больше не нужен, но с использованием нескольких keys Функция GuiMacro не является оптимальной, лучше использовать вид keys("^[","[","Z") или просто print("\e[Z"),

Я нашел обходной путь. К сожалению, это нарушает возможность обратной навигации по именам файлов на консоли, вставляя ^[[Z вместо этого, поэтому я все еще ищу лучший ответ, чем этот. Тем не менее, это заставляет SHIFT-TAB работать в Vim без дальнейшей модификации конфигурации Vim. Я использовал функцию макросов ConEmu для отображения SHIFT-TAB в ConEmu на escape-последовательность Vim ^[[Z (увидеть :set t_kB), который он уже интерпретирует как <S-Tab> по умолчанию. Макрос есть keys("^["); keys("["); keys("Z"), как показано ниже.

макрос сопоставления в окне настроек ConEmu

Другие вопросы по тегам