設置Autohotkey的文件/EXE文件以進行VIM仿真。
vim.ahk是autohotkey(autohotkey_l)的設置文件。
vim.exe是由vim.ahk製成的獨立應用程序(在版本頁面中可用)。
這是Windows的VIM仿真。如果您對Mac的相同設置感興趣,請嘗試使用rcmdnk的karabiner for karabiner -macos:karabiner -element -element -element -elements complex_modifications規則。
此腳本適用於Autohotkey V2。
如果您使用的是Autohotkey V1,請使用版本V0.13.2(或AHK_V1分支)。
如果您已經安裝了Autohotkey,則只需使用Autohotkey打開Vim.ahk。
如果您正在使用另一個腳本運行Autohotkey,則可以使用AutoHotkey將其包含在腳本中...請在Users%username%Documents或腳本所在的位置複製vim.ahk和lib Directory,並在Autohotkey.ahk或您的腳本中添加以下行,或您的腳本:
#Include %A_LineFile%..vim.ahk
在自動執行部分的末尾。
您也可以使用vim_ahk.exe ,它可以獨立使用a autohotkey。
要獲得可執行文件,請轉到發布頁面並下載最新的zip文件。
解開zip文件,然後將提取的vim_ahk文件夾放置在您喜歡的地方,然後啟動vim_ahk.exe 。
筆記
將VIM_AHK_ICONS文件夾放在帶有vim_ahk.exe的同一文件夾中,否則,托盤菜單圖標功能不起作用。
clone vim_ahk和go vim_ahk文件夾,然後運行build.bat 。
.build.bat在powerShell或命令提示符上。您會找到包含vim_ahk.exe和vim_ahk_icons的vim_ahk文件夾。
默認設置啟用以下應用程序的VIM模式:
您可以從任務托盤圖標的右鍵菜單(在列表中找到VimMenu Settings )更改它們,也可以通過Ctrl-Alt-Shift-v啟動設置窗口。
如果要直接在腳本中更改應用程序,請在vim.ahk中的Vim := new VimAhk()之前添加VimGroup變量(可以通過autohotkey的窗口間諜檢查窗口標題/class),或在包含vim.ahk之前寫入。
示例行:
VimGroup := "ahk_exe chrome.exe,ahk_exe firefox.exe"
多個應用程序可以通過逗號分隔寫。
筆記
這將覆蓋默認應用程序。如果要將這些應用程序添加到默認應用程序中,請在應用程序之後添加以下應用程序:
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
或者,您可以使用下面描述的GUI選項設置菜單。
VimSetTitleMatchMode的默認設置為2,它使匹配方法作為Contain 。
如果設置OneNote ,將包括所有帶有包含OneNote標題的窗口(例如XXX's OneNote )。如果將VimSetTitleMatchMode設置為3,則僅包括OneNote的確切標題。
它可能無法使用OneNote。 OneNote可能具有一個窗口名稱,例如用戶筆記本 - OneNote ,而不是OneNote 。
在這種情況下,您需要使用窗口間諜檢查OneNote的窗口標題。
窗口間諜將為您提供有關窗口標題,類和過程的信息:
User's Notebook - OneNote
ahk_class ApplicationFrameWindow
ahk_exe ApplicationFrameHost.exe
如果將上述任何行添加到vimgroup,則VIM_AHK在OneNote上工作。但是,如果您設置ahk_class ApplicationFrameWindow或ahk_exe ApplicationFrameHost.exe ,VIM_AHK還可以在使用這些類/過程名稱的其他應用程序上(大多數從Microsoft Store安裝的應用程序)上都可以使用。
申請示例:
ahk_exe chrome.exeahk_exe firefox.exeahk_exe EXCEL.EXEahk_exe soffice.bin (對於所有libreoffice應用程序) 除VimGroup外,您還可以在腳本中設置以下選項。所有這些都可以從“設置”菜單更改。
| 選項 | 描述 | 預設 |
|---|---|---|
| vimescnormal | 如果1,則短按ESC設置了正常模式,而長按ESC發送ESC。 | 1 |
| vimsendescnormal | 如果1,則在正常模式下短按ESC發送ESC。 | 0 |
| vimlongescnormal | 如果1,則交換了簡短的按壓和長期按下。 | 0 |
| vimctrlbrackettoesc | 如果1,則表現為ESC。 如果vimctrlbracketnormal為0,則ctrl- [發送ESC。 如果vimctrlbracketnormal為1,則長按ctrl- [發送ESC。 | 0 |
| vimctrlbracketnormal | 如果1,請按ctrl- [設置正常模式,而長按ctrl- [發送ctrl- [。 | 1 |
| vimsendctrlbracketnormal | 如果1,請按ctrl-- [在正常模式下發送ctrl- [發送ctrl-。 | 0 |
| vimlongctrlbracketnormal | 如果1,則簡短按下和長按ctrl- [交換行為。 | 0 |
| vimchangecaretWidth | 如果1,請在操作前檢查光標下的字符。當前使用: a處於正常模式下(檢查光標是否位於行的末端)。 | 0 |
| vimrestoreime | 如果1,輸入插入模式時將恢復IME狀態。 | 1 |
| vimjj | 如果1, jj從插入模式將模式更改為正常模式。 | 0 |
| vimtwoletteresc | 在插入模式下以達到正常模式的字符對列表。 例如, jf的值意味著同時按j和f進入正常模式。可以通過 , (例如jf,jk,sd ) | |
| vimdisableunused | 在插入模式以外,禁用未使用鍵的級別:
| 3 |
| vimsetTitleMatchMode | SETTITLEMATCHMODE:
| 2 |
| vimsetTitleMatchModefs | SETTITLEMATCHMODE:
| 快速地 |
| VimiconCheckInterval | 間隔以檢查VIM_AHK狀態(MS)和更改托盤圖標(請參見下圖)。 如果將其設置為0,則設置了原始AHK圖標,並且不會更改。 | 1000 |
| vimverbose | 冗長級別:
| 1 |
| vimapplist | 申請列表用法:
| 允許列表 |
| vimgroup | 啟用了女巫vim_ahk上的應用程序。 | 請參閱應用程序部分 |
您可以在“自動執行”部分中的腳本中包含vim.ahk之前添加選項:
VimVerbose := 2
#Include pathtovim.ahk
如果要在vim.ahk腳本中直接更改它們,請在Vim := new VimAhk()之前添加這些變量。
筆記
這些VIM變量將覆蓋默認值和初始值。檢查這些變量後,讀取配置文件。如果您已經運行vim_ahk,則創建了配置文件並保存所有設置。要反映新設置,請嘗試在GUI選項設置窗口中Reset 。
筆記
VimiconCheckInterval示例
如果將VimiconCheckInterval設置為非零,則將托盤圖標更改或更改模式或將應用程序更改為啟用VIM_AHK或未啟用的應用程序。
警告
vimchangecaretWidth
CARET寬度只能在特定應用程序上更改:WordPad,Word或OneNote。在記事本或探險家上,將保留插入寬度,但不會改變。
對於大多數其他應用程序,將插入寬度保留為原始寬度。
啟用此選項後,當模式更改時,當前窗口將短暫失去焦點。
如果啟用了此選項並在正常模式下更改Caret寬度厚,並禁用選項,則光標寬度保持厚。要逆轉插入的寬度,請重新啟用選項並在Wordpad處輸入插入模式,或者以恢復插入寬度的內容,然後禁用選項。
您可以從任務托盤圖標的右鍵菜單(在列表中找到VimMenu Settings )更改這些選項,也可以通過Ctrl-Alt-Shift-v啟動設置窗口。
在這裡,您可以添加應用程序,更改模式更改密鑰或更改詳細信息。
如果推送Reset ,則將在窗口中顯示默認設置。僅在按下OK按鈕時,才能啟用這些設置。
這些默認設置在上述腳本中被您的VimXXX選項覆蓋。 (IE Reset除了VIM_AHK的默認設置外,還將在腳本中還原您的選項。)
| 鑰匙 | 功能 |
|---|---|
| Ctrl-Alt-Shift-V | 啟動GUI選項設置窗口。 |
| Ctrl-Alt-Shift-S | 暫停/重新啟動vim_ahk。 |
| Ctrl-Alt-Shift-C | 顯示狀態檢查窗口。 (僅在vimgroup應用程序上。) |
這是主要模式。
| 模式 | 描述 |
|---|---|
| 插入模式 | 原始Windows狀態 |
| 正常模式 | 與VIM一樣,光標被hjkl , w等移動,並且可以使用一些類似VIM的命令。 |
| 視覺模式 | 有三種視覺模式:角色,線和塊。塊視覺模式僅適用於支持塊選擇的應用程序(例如Terapad)。 |
| 命令模式 | 可用於保存文件/退出。 |
初始狀態是插入模式,然後是ESC或Ctrl-[將您帶入正常模式。
在正常模式下, i是返回插入模式的關鍵。
v , V和Ctrl-v分別是角色,線條和塊視覺模式的關鍵。
按下之後:可用一些可以保存/退出的命令。
| 鍵/命令 | 功能 |
|---|---|
| ESC/ctrl- [ | 輸入正常模式。保持(0.5s)這些鍵模仿正常的ESC/ctrl- [。 |
| JJ | 輸入正常模式,如果啟用。 |
| 自定義兩個字母 | 如果設置了兩個字母的映射。 |
ESC/ctrl- [如果IME打開,請關閉IME。 ESC在IME打開並轉換說明時充當ESC。 ctrl- [即使IME打開,關閉IME並進入正常模式。
如果VimLongEscNormal (vimlongctrlbracketnormal normal normal normal normal normal normal normal normal normal norkal VimLongCtrlBracketNormal (0),則長按ESC(ctrl- [)將發送這些原始鍵。
如果啟用了VimLongEscNormal ( VimLongCtrlBracketNormal ),則單個按下將發送原始鍵,而長按下將將模式更改為正常模式。
如果使用自定義的兩個字母熱鍵進入正常模式,則兩個字母必須不同。
警告
角色只能用於一個兩個字母的熱鍵。如果您指定ab和bc , ba (首先推動b ,然後a )不起作用。如果您先推a ,則ab會起作用。
| 鍵/命令 | 功能 |
|---|---|
| i/i/a/a/o/o | 在行/開始/下線/上線/下行的光標/末端旁邊/旁邊的“光標/啟動”下輸入插入模式。 |
| v/v/ctrl-v | 輸入角色/線條/塊的視覺模式。 |
| : | 輸入命令行模式 |
| 鍵/命令 | 功能 |
|---|---|
| H/J/K/L。 | 左/下/向上/右。 |
| 0/$ | 移至線路的起點/結束。 |
| ctrl-a/ctrl-e | 移至行的起點/結束(Emacs類似)。 |
| ^ | 移至該行的起始非空格字符。 |
| w/w | 移至下一個單詞的開頭。 |
| E/E。 | 移至單詞的結尾。 (實際上,移至下一個單詞的開頭,向左移動一個字符。) |
| b/b | 移至上一個單詞的開頭。 |
| ctrl-u/ctrl-d | 上/下10行。 |
| CTRL-B/CTRL-F | Pageup/pagedown。 |
| gg/g | 轉到文件的頂部/底部 |
| 空間 | 正確的。 |
| 進入 | 移至下一行的開頭。 |
筆記
Enter僅適用於編輯器應用程序(對於Explorer,Q-Dir以外,它即使在正常模式下也可以作為輸入)。
此外, Repeat也可用於某些命令。
| 示例命令 | 行動 |
|---|---|
| 4J | 下4行 |
| 3W | 向前移動3個字 |
| 100J | 向下100行 |
| 鍵/命令 | 功能 |
|---|---|
| 是的,是的 | 複製行。 |
| DD | 切線。 |
| d | 從這里切到線的盡頭。 |
| CC | 更改行(輸入插入模式)。 |
| c | 從此處切開到行的末端,然後進入插入模式。 |
| X/X | 刪除光標下/之前的字符(未在剪貼板中註冊)。 |
| p/p | 粘貼到下一個/當前位置。如果通過線條視覺模式完成複制/切割,則將其粘貼到下一行/當前行。一些命令(這樣的YY/DD)也強迫粘貼為線條。 |
| yiw/diw/ciw | 複製/剪切/更改當前單詞。 |
也可以使用Y/D/C+移動命令。
yw >複製下一個單詞。d3w >刪除下一個3個單詞。| 鍵/命令 | 功能 |
|---|---|
| u/ctrl-r | 撤消/重做。 |
| r/r | 替換一個字符/多個字符。 |
| j | 結合兩條線。 |
| 。 | 它是修復的: Replace the following word with a clipboard (可與搜索一起使用)。 |
| 〜 | 更改案例。 |
| / | 開始搜索(將打開搜索框) |
| N/n | 搜索Next/上一個(某些應用程序僅支持下一個搜索) |
| * | 在光標下搜索單詞。 |
| ZZ/ZQ | 保存並退出/退出。 |
| 鍵/命令 | 功能 |
|---|---|
| ESC/ctrl- [ | 輸入正常模式。 |
| 移動命令 | 在正常模式下,大多數移動命令可用。 |
| y/d/x/c | 複製/切割/切割和插入( d = x ) |
| y/d/x/c | 移動到線的末端,然後復制/切割/切割/切割和插入模式( D = X ) |
| IW | 選擇當前單詞。 |
| * | 搜索選定的單詞。 |
| 鍵/命令 | 功能 |
|---|---|
| ESC/ctrl- [ | 輸入正常模式。 |
| W +返回 | 節省 |
| W +空間 | 保存為 |
| W + q | 保存並退出 |
| 問 | 辭職 |
| h | 申請的開放幫助 |
請參閱Ranger,這是帶有VI密鑰綁定的控制台文件管理器。
| 鍵/命令 | 功能 |
|---|---|
| H/J/K/L。 | backspace(返回到父目錄)/down/up/up/enter(輸入選定目錄或打開文件) |
| alt+u/i/j/k | 在四向方向之間切換 |
| ' | 菜單快速鏈接 |
測試通過執行tests/run_vimahk_tests.ahk運行。打開了記事本和VIM窗口,並啟動了VIM_AHK。
所使用的測試系統是tests/testcases.txt中的一系列測試用例。 TXT代表要發送到VIM_AHK的擊鍵。這些已發送到開放的VIM和記事本窗口,並比較結果文本。
測試可能非常薄弱,因此應用作指南並執行代碼路徑以檢查錯誤。測試應使用默認INI進行。