Setting file/exe file of AutoHotkey for Vim emulation.
vim.ahk is the setting file for AutoHotkey(Autohotkey_L).
vim.exe is a standalone application made from vim.ahk.
If you've already installed AutoHotKey, just open vim.ahk with AutoHotkey.
You can also use vim.exe, which can work standalone w/o AutoHotKey.
If you are running AutoHotKey with another script,
you can include it in your script using AutoHotKey...
Please put vim.ahk in \Users\%username%\Documents
or where the script is in,
and add the following line in AutoHotkey.ahk or your script:
#Include %A_LineFile%\..\vim.ahk
at the end of the Auto-execute section.
The default setting enables vim-mode for the following applications:
- Notepad (メモ帳)
- Wordpad
- TeraPad
- Windows Explorer
- Thunderbird (only sending window)
- Microsoft PowerPoint
- Microsoft Word
- Evernote
- Visual Studio Code
- OneNote
- TexWork
- TexStudio
You can change them from the right click menu of task tray icon (find VimMenu
-Settings
in the list),
or launch the setting window by Ctrl-Alt-Shift-v
.
If you want to change applications directly in the script, add GroupAdd VimGroup
lines at the top of vim.ahk
(Window title/class can be seen by window spy in AutoHotkey), like:
GroupAdd VimGroup, ahk_exe notepad.exe ; NotePad
Option | Description | Default |
---|---|---|
VimRestoreIME | If 1, IME status is restored at entering insert mode. | 1 |
VimJJ | If 1, jj changes mode to Normal from Insert. |
0 |
VimIcon | If 1, task tray icon is changed when mode is changed. | 1 |
VimDisableUnused | Disable level of unused keys in Normal mode (see below for details). | 3 |
VimIconCheck | If 1, check window periodically and update tray icon. | 1 |
VimIconCheckInterval | Interval to check window (ms). | 1000 |
VimVerbose | Verbose level (see below for details). | 0 |
Verbose level:
- 1: Nothing.
- 2: Minimum tool tips (Mode name only).
- 3: Tool tips.
- 4: Msgbox.
Disable level:
- 1: Do not disable unused keys
- 2: Disable alphabets (+shift) and symbols
- 3: Disable all including keys with modifiers (e.g. Ctrl+Z)
You can change these options from the right click menu of task tray icon (find VimMenu
-Settings
in the list),
or launch the setting window by Ctrl-Alt-Shift-v
.
If Icon
is enabled, the task try icon is changed following the mode.
Here are the main modes.
Mode | Description |
---|---|
Insert Mode | Normal Windows state |
Normal Mode | As in vim, a cursor is moved by hjkl, w, etc... and some vim like commands are available. |
Visual Mode | There are three visual mode: Character-wise, Line-wise, and Block-wise. Block-wise visual mode is valid only for applications which support block-wise selection (such TeraPad). |
Command Mode | Can be used for saving file/quitting. |
The initial state is Insert Mode
, then Esc
or Ctrl-[
brings you to Normal Mode.
In Normal Mode, i
is the key to be back to Insert Mode.
v
, V
and Ctrl-v
are the key to the Character-wise, Line-wise, and Block-wise
Visual Mode, respectively.
After pressing :
, a few commands to save/quit are available.
Key/Commands | Function |
---|---|
ESC/Ctrl-[ | Enter Normal Mode. Holding (0.5s) these keys emulate normal ESC. |
jj | Enter Normal Mode. |
ESC/Ctrl-[ switch off IME if IME is on. ESC acts as ESC when IME is on and converting instructions. Ctrl-[ switches off IME and enters Normal Mode even if IME is on.
jj is optional one, which is enabled when VimJJ = 1.
Key/Commands | Function |
---|---|
i/I/a/A/o/O | Enter Insert Mode at under the cursor/start of the line/next to the cursor/end of the line/next line/previous line. |
v/V/Ctrl-v | Enter Visual Mode of Character-wise/Line-wise/Block-wise. |
: | Enter Command Line Mode |
Key/Commands | Function |
---|---|
h/j/k/l | Left/Down/Up/Right. |
0/$ | To the start/end of the line. |
Ctrl-a/Ctrl-e | To the start/end of the line (emacs like). |
^ | To the starting non-whitespace character of the line. |
w/W/e/E | Move a word forward (all work the same way: goes to the beginning of the word). |
b/B | Move a word backward (b/B: the beginning of the word). |
Ctrl-u/Ctrl-d | Go Up/Down 10 line. |
Ctrl-b/Ctrl-f | PageUp/PageDown. |
gg/G | Go to the top/bottom of the file |
In addition, Repeat
is also available for some commands.
Example Commands | Action |
---|---|
4j | Down 4 lines |
3w | Move 3 words forward |
100j | Down 100 lines |
Key/Commands | Function |
---|---|
yy, Y | Copy the line. |
dd | Cut the line. |
D | Cut from here to the end of the line. |
cc | Change the line (enter Insert Mode). |
C | Cut from here to the end of the line and enter Insert Mode. |
x/X | Delete a character under/before the cursor (not registered in the clipboard). |
p/P | Paste to the next/current place. If copy/cut was done with line-wise Visual Mode, it pastes to the next/current line. Some commands (such yy/dd) also force to paste as line-wise. |
y/d/c+Move Command can be used, too.
- e.g.)
yw
-> copy next one word. - e.g.)
d3w
-> delete next 3 words.
Key/Commands | Function |
---|---|
u/Ctrl-r | Undo/Redo. |
r/R | Replace one character/multiple characters. |
J | Combine two lines. |
. | It is fixed to do: Replace a following word with a clipboard (useful to use with a search). |
~ | Change case. |
/ | Start search (search box will be opened) |
n/N | Search next/previous (Some applications support only next search) |
* | Search the word under the cursor. |
ZZ/ZQ | Save and Quit/Quit. |
Key/Commands | Function |
---|---|
ESC/Ctrl-[ | Enter Normal Mode. |
Move command | Most of move commands in the Normal Mode are available. |
y/d/x/c | Copy/Cut/Cut/Cut and insert (d =x ) |
Y/D/X/C | Move to the end of line, then Copy/Cut/Cut/Cut and Insert Mode (D =X ) |
* | Search the selected word. |
Key/Commands | Function |
---|---|
ESC/Ctrl-[ | Enter Normal Mode. |
w + RETURN | Save |
w + SPACE | Save as |
w + q | Save and Quit |
q | Quit |
h | Open help of the application |
vim_ime.exe is an executable file which automatically switches IME off on Vim (when switching from Insert Mode to Normal Mode). The setting file can be found in this gist.