Definir arquivo/arquivo exe do AutoHotKey para emulação de vim.
vim.ahk é o arquivo de configuração do AutoHotKey (AutohotKey_L).
vim.exe é um aplicativo independente feito de vim.ahk (disponível na página de liberações).
Esta é a emulação do VIM para o Windows. Se você estiver interessado nas mesmas configurações para Mac, tente a emulação do vim para Karabiner - Software para MacOS: Karabiner -Elements Complex_modificações Regras da RCMDNK.
Este script é para autohotkey v2.
Se você estiver usando o AutoHotKey V1, use a Liberação v0.13.2 (ou AHK_V1 Branch).
Se você já instalou o AutohotKey, basta abrir o Vim.ahk com o AutohotKey.
Se você estiver executando o AutoHotKey com outro script, poderá incluí -lo no seu script usando o diretório AutoHotKey ... copie o VIM.ahk e o Lib em Users%username%Documents ou onde o script está e adicione a linha seguinte em AutoHotkey.ahk ou seu script:
#Include %A_LineFile%..vim.ahk
No final da seção de excesso automático.
Você também pode usar vim_ahk.exe , que pode funcionar independente sem autohotkey.
Para ser executável, acesse a página de lançamentos e faça o download do arquivo zip mais recente.
Descompacte o arquivo zip e coloque a pasta VIM_AHK extraída onde quiser e inicie o vim_ahk.exe .
Observação
Coloque a pasta vim_ahk_icons na mesma pasta com vim_ahk.exe , caso contrário, o recurso do ícone do menu da bandeja não funciona.
CLONE VIM_AHK e vá vim_ahk Pasta e execute build.bat .
.build.bat no PowerShell ou prompt de comando.Você encontrará pasta VIM_AHK que contém vim_ahk.exe e vim_ahk_icons .
A configuração padrão permite o modo Vim para os seguintes aplicativos:
Você pode alterá-los no menu do clique com o botão direito do mouse do ícone da bandeja de tarefas (encontre Settings VimMenu -na lista) ou iniciar a janela de configuração por Ctrl-Alt-Shift-v .
Se você deseja alterar os aplicativos diretamente no script, adicione a variável VimGroup antes Vim := new VimAhk() em vim.ahk (título da janela/classe pode ser verificado por espião da janela de autohotkey) ou escrever antes de incluir vim.ahk
Exemplo de linha:
VimGroup := "ahk_exe chrome.exe,ahk_exe firefox.exe"
Vários aplicativos podem ser escritos por um vírgula separado.
Observação
Isso substituirá os aplicativos padrão. Se você deseja adicionar esses aplicativos aos aplicativos padrão, adicione os seguintes aplicativos após seus aplicativos:
ahk_exe notepad.exe,ahk_exe explorer.exe,ahk_exe wordpad.exe,ahk_exe TeraPad.exe,作成,Write:,ahk_exe POWERPNT.exe,ahk_exe WINWORD.exe,ahk_exe Evernote.exe,ahk_exe Code.exe,ahk_exe onenote.exe,OneNote,ahk_exe texworks.exe,ahk_exe texstudio.exe
Ou você pode usar o menu de configuração da opção GUI descrito abaixo.
A configuração padrão do VimSetTitleMatchMode é 2, que torna os métodos correspondentes como Contain .
Se você definir OneNote , todas as janelas com um título que contêm OneNote (por exemplo, XXX's OneNote ) serão incluídas. Se você definir VimSetTitleMatchMode como 3, apenas o título exato do OneNote será incluído.
Pode não funcionar no OneNote. O OneNote pode ter um nome de janela como o Notebook do usuário - OneNote , em vez do OneNote .
Nesse caso, você precisa verificar o título da janela do OneNote com espião da janela.
A Window Spy dará a você sobre o título da janela, a classe e o processo como:
User's Notebook - OneNote
ahk_class ApplicationFrameWindow
ahk_exe ApplicationFrameHost.exe
Se você adicionar alguma das linhas acima ao VimGroup, o VIM_AHK trabalhará no OneNote. Mas se você definir ahk_class ApplicationFrameWindow ou ahk_exe ApplicationFrameHost.exe , o VIM_AHK também funciona em outros aplicativos que usam esses nomes de classe/processo (a maioria dos aplicativos instalados no Microsoft Store).
Exemplos de aplicativos:
ahk_exe chrome.exeahk_exe firefox.exeahk_exe EXCEL.EXEahk_exe soffice.bin (para todos os aplicativos LibreOffice) Além do VimGroup , existem as seguintes opções que você pode definir no seu script. Tudo isso também pode ser alterado no menu de configuração.
| Opção | Descrição | Padrão |
|---|---|---|
| VimescNormal | Se 1, pressione curto esc defina o modo normal, enquanto o Press Long Press envia ESC. | 1 |
| VimsendescNormal | Se 1, pressione curto escand, envie ESC no modo normal. | 0 |
| VimlongescNormal | Se 1, a prensa curta e a longa imprensa dos comportamentos escão com os comportamentos da ESC são trocados. | 0 |
| Vimctrlbrackettoesc | Se 1, Ctrl- [se comporta como ESC. Se o vimctrlbracketNormal for 0, ctrl- [envia esc. Se o vimctrlbracketNormal for 1, pressione longa ctrl- [envia esc. | 0 |
| VimctrlbracketNormal | Se 1, pressionar Ctrl- [define o modo normal, enquanto pressiona longa ctrl- [envia Ctrl- [. | 1 |
| VimsendctrlbracketNormal | Se 1, pressione curto ctrl- [envie ctrl- [no modo normal. | 0 |
| VimlongctrlbracketNormal | Se 1, a prensa curta e a longa imprensa de Ctrl- [comportamentos são trocados. | 0 |
| VimchanGecaretWidth | Se 1, verifique o personagem sob o cursor antes de uma ação. Atualmente, isso é usado para: a no modo normal (verifique se o cursor está localizado no final da linha). | 0 |
| VimRestoreime | Se 1, o status IME é restaurado na entrada no modo de inserção. | 1 |
| Vimjj | Se 1, jj altera o modo para o modo normal do modo de inserção. | 0 |
| Vimtwoletteresc | Uma lista de pares de caracteres para pressionar juntos durante o modo de inserção para chegar ao modo normal. Por exemplo, um valor de jf significa pressionar j e f ao mesmo tempo entrará no modo normal.A combinação múltipla pode ser definida por separada por , . (por exemplo jf,jk,sd ) | |
| VimdisableUnused | Desativar o nível de chaves não utilizadas em outras que não o modo de inserção:
| 3 |
| VimSettitLematchMode | SettitLematchMode:
| 2 |
| VimSettitLematchModefs | SettitLematchMode:
| Rápido |
| VimicoCheckInterval | Intervalo para verificar o status vim_ahk (ms) e alterar o ícone da bandeja (veja a figura abaixo). Se estiver definido como 0, o ícone AHK original será definido e não alterado. | 1000 |
| Vimverbose | Nível verboso:
| 1 |
| Vimapplist | Uso da lista de aplicativos:
| Permitir lista |
| Vimgroup | As aplicações no bruxa vim_ahk estão ativadas. | Consulte a seção Aplicativos |
Você pode adicionar suas opções antes de incluir o vim.ahk no seu script na seção de execução automática como:
VimVerbose := 2
#Include pathtovim.ahk
Se você deseja alterá -los diretamente no script vim.ahk, adicione estas variáveis antes Vim := new VimAhk() .
Observação
Essas variáveis VIM substituirão os valores padrão e os valores iniciais. Depois de verificar essas variáveis, o arquivo de configuração é lido. Se você já executou VIM_AHK, o arquivo de configuração foi criado e todas as configurações foram salvas. Para refletir as novas configurações, tente Reset na janela de configuração da opção GUI.
Observação
Exemplo de VimicoCheckinterval
Se você definir o VimicoCheckInterval como diferente de zero, o ícone da bandeja será alterado quando você altera o modo ou altera os aplicativos para VIM_AHK ativado ou não habilitados.
Aviso
VimchanGecaretWidth
A largura do atendimento pode ser alterada apenas em aplicações específicas: WordPad, Word ou OneNote. No bloco de notas ou explorador, a largura do intervalo é mantida, mas não muda.
Para a maioria das outras aplicações, a largura do intervalo é mantida como a largura original.
Quando essa opção é ativada, a janela atual perde brevemente o foco quando o modo é alterado.
Se você ativou essa opção e altere a largura do zã de espessura no modo normal e desative a opção, a largura do cursor será mantida como espessa. Para reverter a largura do intervalo, reative a opção e insira o modo de inserção no Wordpad ou algo para reverter a largura do zelador e desative a opção.
Você pode alterar essas opções no menu do clique com o botão direito do mouse do ícone da bandeja de tarefas (encontre Settings VimMenu na lista) ou iniciar a janela de configuração por Ctrl-Alt-Shift-v .
Aqui, você pode adicionar aplicativos, alterar a tecla de alteração do modo ou alterar o nível detalhado.
Se você Reset , as configurações padrão serão mostradas na janela. Essas configurações serão ativadas apenas se você pressionar o botão OK .
Essas configurações padrão são substituídas pelas suas opções VimXXX no seu script descrito acima. (ou seja, Reset restaurará suas opções no script, além das configurações padrão de VIM_AHK.)
| Chave | Função |
|---|---|
| Ctrl-alt-shift-v | Inicie a janela de configuração da opção GUI. |
| Ctrl-alt-shift-s | Suspenda/reinicie Vim_ahk. |
| Ctrl-Alt-Shift-C | Mostrar janela de verificação de status. (Somente nos aplicativos Vimgroup.) |
Aqui estão os modos principais.
| Modo | Descrição |
|---|---|
| Modo de inserção | Estado original do Windows |
| Modo normal | Como no VIM, um cursor é movido por hjkl , w , etc ... e alguns comandos do tipo VIM estão disponíveis. |
| Modo visual | Existem três modos visuais: em termos de personagem, em termos de linha e em bloco. O modo visual em bloco é válido apenas para aplicativos que suportam a seleção em bloco (tal terapad). |
| Modo de comando | Pode ser usado para salvar o arquivo/desligamento. |
O estado inicial é o modo de inserção, então ESC ou Ctrl-[ leva você ao modo normal.
No modo normal, i é a chave para estar de volta ao modo de inserção.
v , V e Ctrl-v são a chave para o modo visual em termos de caracteres, em termos de linha e em bloco, respectivamente.
Após pressionar : alguns comandos para salvar/desistir estão disponíveis.
| Chave/comandos | Função |
|---|---|
| Esc/ctrl- [ | Digite o modo normal. Holding (0,5s) Essas chaves imitam esc/ctrl- [. |
| JJ | Digite o modo normal, se ativado. |
| Duas letras personalizadas | Se o mapeamento de duas letras estiver definido. |
ESC/CTRL- [Desligue o IME se o IME estiver ligado. O ESC atua como ESC quando o IME está ligado e convertendo instruções. Ctrl- [desligamentos IME e entra no modo normal, mesmo que o IME esteja ligado.
Long Press ESC (Ctrl- [) enviará essas chaves originais, se VimLongEscNormal ( VimLongCtrlBracketNormal não estiver ativado (0).
Se VimLongEscNormal ( VimLongCtrlBracketNormal ) estiver ativado, uma única pressionada enviará as teclas originais e uma impressora longa mudará o modo para o modo normal.
Se estiver usando uma tecla de atalho personalizada de duas letras para entrar no modo normal, as duas letras devem ser diferentes.
Aviso
Um personagem pode ser usado apenas para uma tecla de atalho de duas letras. Se você especificar ab e bc , ba (empurre b primeiro e depois a ) não funciona. Se você empurrar a primeiro, ab funcionará, no entanto.
| Chave/comandos | Função |
|---|---|
| i/i/a/a/o/o | Digite o modo de inserção sob o cursor/início da linha/próximo ao cursor/final da linha/próximo linha/linha anterior. |
| v/v/ctrl-v | Digite o modo visual de caracteres/em termos de linha/bloco. |
| : | Digite o modo de linha de comando |
| Chave/comandos | Função |
|---|---|
| h/j/k/l | Esquerda/para baixo/para cima/direita. |
| 0/$ | Mova para o início/final da linha. |
| Ctrl-A/Ctrl-e | Mova para o início/final da linha (emacs como). |
| ^ | Mova-se para o caráter inicial não-branco da linha. |
| p/p | Mova para o início da próxima palavra. |
| e/e | Mova -se para o final da palavra. (Na verdade, vá para o início da próxima palavra e mova um personagem para a esquerda.) |
| b/b | Mova para o início da palavra anterior. |
| Ctrl-U/Ctrl-D | Vá para cima/para baixo 10 linha. |
| Ctrl-B/Ctrl-F | PAGEUP/PAGEDOWN. |
| gg/g | Vá para a parte superior/inferior do arquivo |
| Espaço | Certo. |
| Digitar | Mova para o início da próxima linha. |
Observação
Digite funciona apenas para aplicativos do editor (para que não seja o Explorer, Q-DIR, ele funciona como inserir mesmo no modo normal).
Além disso, Repeat também está disponível para alguns comandos.
| Comandos de exemplo | Ação |
|---|---|
| 4J | Down 4 linhas |
| 3w | Mova 3 palavras para a frente |
| 100J | Descendo 100 linhas |
| Chave/comandos | Função |
|---|---|
| yy, y | Copie a linha. |
| dd | Corte a linha. |
| D | Corte daqui até o final da linha. |
| cc | Altere a linha (digite o modo de inserção). |
| C | Corte daqui até o final da linha e insira o modo de inserção. |
| x/x | Exclua um caractere sob/antes do cursor (não registrado na área de transferência). |
| p/p | Cole no próximo local/atual. Se a cópia/corte foi feita com o modo visual em termos de linha, ele colará na próxima linha de corrente/atual. Alguns comandos (tais yy/dd) também forçam a colar como em termos de linha. |
| yiw/diw/ciw | Copiar/cortar/alterar a palavra atual. |
O comando y/d/c+move também pode ser usado.
yw -> copie a próxima palavra.d3w -> exclua as próximas 3 palavras.| Chave/comandos | Função |
|---|---|
| u/ctrl-r | Desfazer/refazer. |
| r/r | Substitua um caractere/vários caracteres. |
| J | Combine duas linhas. |
| . | Ele é corrigido: Replace the following word with a clipboard (útil para usar com uma pesquisa). |
| ~ | Caso de mudança. |
| / | Iniciar a pesquisa (a caixa de pesquisa será aberta) |
| n/n | Pesquise a seguir/anterior (alguns aplicativos suportam apenas a próxima pesquisa) |
| * | Pesquise a palavra sob o cursor. |
| ZZ/ZQ | Salve e saia/desista. |
| Chave/comandos | Função |
|---|---|
| Esc/ctrl- [ | Digite o modo normal. |
| Mover comando | A maioria dos comandos de movimentos no modo normal está disponível. |
| y/d/x/c | Copiar/cortar/cortar/cortar e inserir ( d = x ) |
| Y/d/x/c | Mova para o final da linha e depois copie/corte/corte/corte e o modo de inserção ( D = X ) |
| iw | Selecione a palavra atual. |
| * | Pesquise a palavra selecionada. |
| Chave/comandos | Função |
|---|---|
| Esc/ctrl- [ | Digite o modo normal. |
| W + retornar | Salvar |
| W + espaço | Salve como |
| W + q | Salvar e desistir |
| q | Desistir |
| h | Ajuda aberta do aplicativo |
Consulte o Ranger, que é um gerenciador de arquivos do console com vinculações de chave VI.
| Chave/comandos | Função |
|---|---|
| h/j/k/l | Backspace (retorna ao diretório pai)/para baixo/up/enter (entra no diretório selecionado ou abre um arquivo) |
| Alt+u/i/j/k | Alterne entre os diretores quad |
| ' | Links rápidos do menu |
Os testes são executados executando tests/run_vimahk_tests.ahk . Uma janela de bloco de notas e VIM é aberta e o VIM_AHK é iniciado.
O sistema de teste usado é uma série de casos de teste em tests/testcases.txt representando teclas para enviar para o vim_ahk. Estes são enviados para as janelas abertas e no bloco de notas, e o texto resultante é comparado.
Os testes podem ser muito flakey, portanto, devem ser usados como guia e executar caminhos de código para verificar se há erros. Os testes devem ser executados com uma ini padrão.