Я хотел бы запустить макрос Autohotkey, используя отображение vim, это возможно? Например, чтобы создать отображение vim в нормальном режиме в vim для ввода CTRL-J, затем используйте его для запуска Autohotkey.

В VIM:

:nnoremap ,w <ctrl-j>

AutoHotkey

^j:: do something

Когда я делаю это, физический ввод CTRL-J на моей клавиатуре успешно запускает макрос Autohotkey, но отображение vim - нет.

2 ответа2

1

Вы можете использовать ImageSearch, так как вы знаете координаты строки состояния VIM, где указано INSERT, вы можете использовать SetTimer для проверки каждые, скажем, 200 мс, если INSERT найден (вам, конечно, нужно сначала захватить / создать изображение). Если он может быть найден, вы можете установить переменную переключения на true или false, и вы можете использовать эту переменную с оператором #If.

Будет выглядеть примерно так

Toggle:=false
SetTimer, Label, 200
Return

#If Toggle
; hotkeys/hotstrings etc
#If

label:
IfWinNotActive, ahk_exe gvim.exe
   {
    toggle:=false
    return
   }
ImageSearch.... ; 
If (ErrorLevel = 0) ; image found
   {
    toggle:=true
    return
   }
Return
1

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

SetTitleMatchMode, RegEx
#IfWinActive, - G?VIM\d*$
:*?:`,w::
    do something
    return
#IfWinActive

Но у этого есть недостаток запуска независимо от режима Vim, так как AutoHotkey не может знать, находится ли Vim в нормальном режиме или нет.

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