Заставить 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")
, как показано ниже.