Используйте AHK, чтобы обнаружить «режим Vim» для окон графического интерфейса и настроить условные сопоставления клавиш - PullRequest
0 голосов
/ 05 февраля 2019

Мотивирующая история (TL; DR)

Терминалы по историческим причинам не будут отличать tab от Ctrl + I .Когда я использую Vim, это приводит в замешательство: моя мышечная память говорит мне, что Ctrl + I продвинет меня вперед на следующую позицию в «Jumplist», но некоторые Vim-плагиныпереопределите клавишу tab , чтобы делать другие полезные вещи.

Лучше определенная задача

Могу ли я создать «условное отображение» для активных окон с ahk_process gvim.exe при отсутствии »специальные символы "отображаются в левом нижнем углу активного окна?enter image description here

  • Для окна слева сеанс Vim находится в режиме " Normal-mode "
  • Для окнасправа сеанс Vim находится в режиме вставки.
  • Существуют и другие режимы, например, Visual-mode enter image description here

НаВ конце дня я бы хотел отобразить клавишу tab только в " Normal-mode ".Лучшее, что я могу придумать, - это распознать фиксированную область пикселей в левом нижнем углу и сделать ее условной.Тем не менее, я неопытен для выполнения заданий по распознаванию текста в AHK.

Sidenote: Я прошу помощи у сообщества Vim с обратной стороны того же вопроса: https://vi.stackexchange.com/questions/18796/may-i-have-a-vim-session-report-its-mode-in-its-window-title

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Нет необходимости захватывать текущий режим Vim, чтобы сделать его доступным для другого приложения;это было бы действительно громоздко.Если ваша конечная цель состоит в том, чтобы отправить разные ключи для <Tab> / <C-i> в Vim (например, <F13> вместо <Tab>), и вы хотите, чтобы Vim реагировал по-разному только в определенных режимах (например, в нормальном режиме), вы можетепросто сопоставьте другие режимы, чтобы снова объединить обе клавиши:

:nnoremap <F13> ... " Functionality A
:nnoremap <C-i> ... " Functionality B
:map! <F13> <C-i>   " Both keys continue to do the same in insert and command-line mode.
0 голосов
/ 05 февраля 2019

Нет необходимости для хаков OCR / AHK.

:nmap:nnoremap) карты только в обычном режиме.

:imap:inoremap) карты только врежим вставки.

и т. д.

См. :help :map-commands для различных команд отображения для различных режимов.

Если плагин перезаписывает отображение в нормальном режиме для Вкладка , посмотрите, кто является правонарушителем, используя :verbose nmap <Tab> (или его эквивалент, :verbose nmap <C-I>), а затем посмотрите на документацию, чтобы узнать, как повторно связать его (или, в худшем случае, устранить виновника).

...