Um mapeamento vim pode acionar uma macro Autohotkey?

0

Gostaria de acionar uma macro Autohotkey usando um mapeamento vim, isso é possível? Por exemplo, para criar um mapeamento vim de modo normal no vim para inserir CTRL-J , use-o para disparar o Autohotkey.

No vim:

:nnoremap ,w <ctrl-j>

Autohotkey

^j:: do something

Quando faço isso, digitar fisicamente CTRL-J no meu teclado aciona com sucesso a macro Autohotkey, mas o mapeamento vim não.

    
por mjeppesen 27.07.2016 / 05:55

2 respostas

1

Você poderia usar ImageSearch, como você sabe as coordenadas da barra de status do VIM onde diz INSERT você pode usar um SetTimer para checar cada palavra 200ms se INSERT for encontrado (você tem que capturar / criar uma imagem primeiro é claro) . Se ele puder ser encontrado, você pode definir uma variável de alternância como verdadeira ou falsa e você pode usar essa variável de alternância com a instrução #If.

Seria algo como isto

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
    
por 30.07.2016 / 15:38
1

Como o AutoHotkey ouve eventos de teclado reais e não está ciente do que acontece internamente em qualquer aplicativo específico, e como os mapeamentos do Vim não estão enviando novos eventos de teclado quando eles são disparados, não. Você pode criar uma macro AutoHotkey específica para o Vim apenas:

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

Mas isso tem a desvantagem de ativar independentemente do modo do Vim, já que o AutoHotkey não pode saber se o Vim está no modo normal ou não.

    
por 27.07.2016 / 06:26