การตั้งค่าไฟล์ไฟล์/exe ของ autohotkey สำหรับการจำลอง vim
vim.ahk เป็นไฟล์การตั้งค่าสำหรับ autohotkey (autohotkey_l)
vim.exe เป็นแอปพลิเคชันแบบสแตนด์อโลนที่ทำจาก vim.ahk (มีอยู่ในหน้ารีลีส)
นี่คือการจำลอง vim สำหรับ windows หากคุณสนใจในการตั้งค่าเดียวกันสำหรับ Mac ลองใช้การจำลอง VIM สำหรับ Karabiner - ซอฟต์แวร์สำหรับ MacOS: Karabiner -Elements Complex_modifications กฎโดย RCMDNK
สคริปต์นี้มีไว้สำหรับ Autohotkey v2
หากคุณใช้ Autohotkey v1 โปรดใช้ release v0.13.2 (หรือสาขา AHK_V1)
หากคุณติดตั้ง autohotkey แล้วเพียงเปิด vim.ahk ด้วย autohotkey
หากคุณใช้งาน AutoHotkey ด้วยสคริปต์อื่นคุณสามารถรวมไว้ในสคริปต์ของคุณโดยใช้ AutoHotkey ... โปรดคัดลอกไดเรกทอรี vim.ahk และ lib ใน Users%username%Documents หรือที่สคริปต์อยู่และเพิ่มบรรทัดต่อไปนี้ใน autohotkey.ahk หรือสคริปต์ของคุณ:
#Include %A_LineFile%..vim.ahk
ในตอนท้ายของส่วนการ execute อัตโนมัติ
คุณยังสามารถใช้ vim_ahk.exe ซึ่งสามารถทำงานแบบสแตนด์อโลนโดยอัตโนมัติ
หากต้องการรับสายงานให้ไปที่หน้าเผยแพร่และดาวน์โหลดไฟล์ 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 ซึ่งมี vim_ahk.exe และ vim_ahk_icons
การตั้งค่าเริ่มต้นเปิดใช้งานโหมด VIM สำหรับแอปพลิเคชันต่อไปนี้:
คุณสามารถเปลี่ยนได้จากเมนูคลิกขวาของไอคอนถาดงาน (ค้นหา VimMenu Settings ในรายการ) หรือเปิดหน้าต่างการตั้งค่าโดย Ctrl-Alt-Shift-v
หากคุณต้องการเปลี่ยนแอปพลิเคชันโดยตรงในสคริปต์ให้เพิ่มตัวแปร VimGroup ก่อน Vim := new VimAhk() ใน vim.ahk (ชื่อหน้าต่าง/คลาสสามารถตรวจสอบได้ด้วยการสอดแนมหน้าต่างของ autohotkey) หรือเขียนก่อนรวม 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 ด้วย Window Spy
Spy Window จะให้คุณเกี่ยวกับชื่อหน้าต่างคลาสและกระบวนการเช่น:
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 แล้วยังมีตัวเลือกต่อไปนี้ที่คุณสามารถตั้งค่าในสคริปต์ของคุณ ทั้งหมดนี้สามารถเปลี่ยนแปลงได้จากเมนูการตั้งค่าเช่นกัน
| ตัวเลือก | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
| โดยไม่ปกติ | ถ้า 1 กดสั้น ESC ตั้งค่าโหมดปกติในขณะที่การกด Long ESC ส่ง ESC | 1 |
| vimsendescnormal | ถ้า 1 กดสั้น ESC ส่ง ESC ในโหมดปกติ | 0 |
| วารสาร | ถ้า 1, การกดสั้นและการกดยาวของพฤติกรรม ESC จะถูกเปลี่ยน | 0 |
| Vimctrlbrackettoesc | ถ้า 1, ctrl- [ทำงานเป็น ESC ถ้า vimctrlbracketNormal เป็น 0, ctrl- [ส่ง ESC ถ้า vimctrlbracketNormal คือ 1 ให้กด Ctrl- ยาว [ส่ง ESC | 0 |
| VimctrlbracketNormal | ถ้า 1 กด Ctrl- [ตั้งค่าโหมดปกติในขณะที่กด Ctrl- [ส่ง Ctrl- [ | 1 |
| vimsendctrlbracketNormal | ถ้า 1 กดสั้น ๆ 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 ดั้งเดิมจะถูกตั้งค่าและไม่เปลี่ยนแปลง | 1,000 |
| Vimverbose | ระดับ verbose:
| 1 |
| ผู้มีส่วนร่วม | การใช้งานรายการแอปพลิเคชัน:
| อนุญาตรายการ |
| กลุ่ม | เปิดใช้งานแอปพลิเคชันบน Witch VIM_AHK | ดูส่วน แอปพลิเคชัน |
คุณสามารถเพิ่มตัวเลือกของคุณก่อนที่จะรวม vim.ahk ในสคริปต์ของคุณในส่วนการดำเนินการอัตโนมัติเช่น:
VimVerbose := 2
#Include pathtovim.ahk
หากคุณต้องการเปลี่ยนโดยตรงในสคริปต์ vim.ahk ให้เพิ่มตัวแปรเหล่านี้ก่อน Vim := new VimAhk()
บันทึก
ตัวแปร VIM เหล่านี้จะเขียนทับค่าเริ่มต้นและค่าเริ่มต้น หลังจากตรวจสอบตัวแปรเหล่านี้ไฟล์การกำหนดค่าจะถูกอ่าน หากคุณเรียกใช้ VIM_AHK แล้วไฟล์การกำหนดค่าถูกสร้างขึ้นและการตั้งค่าทั้งหมดถูกบันทึกไว้ เพื่อสะท้อนการตั้งค่าใหม่ให้ลอง Reset ในหน้าต่างการตั้งค่าตัวเลือก GUI
บันทึก
ตัวอย่าง VimiconCheckInterval
หากคุณตั้งค่า VimiconCheckInterval เป็นศูนย์ไอคอนถาดจะเปลี่ยนไปเมื่อคุณเปลี่ยนโหมดหรือเปลี่ยนแอปพลิเคชันเป็น VIM_AHK ที่เปิดใช้งานหรือไม่เปิดใช้งาน
คำเตือน
VimchangeCaretwidth
ความกว้างของการดูแลสามารถเปลี่ยนแปลงได้เฉพาะในแอปพลิเคชันเฉพาะ: WordPad, Word หรือ OneNote บน Notepad หรือ Explorer ความกว้างของการดูแลจะถูกเก็บไว้ แต่ไม่เปลี่ยนแปลง
สำหรับแอปพลิเคชันอื่น ๆ ส่วนใหญ่ความกว้างของการดูแลจะถูกเก็บไว้เป็นความกว้างดั้งเดิม
เมื่อเปิดใช้งานตัวเลือกนี้หน้าต่างปัจจุบันจะสูญเสียโฟกัสสั้น ๆ เมื่อโหมดเปลี่ยนไป
หากคุณเปิดใช้งานตัวเลือกนี้และเปลี่ยนความกว้างของการดูแลความหนาในโหมดปกติและปิดการใช้งานตัวเลือกความกว้างของเคอร์เซอร์จะถูกเก็บไว้ให้หนา หากต้องการย้อนกลับความกว้างของ Caret เปิดใช้งานตัวเลือกอีกครั้งและเข้าสู่โหมดแทรกที่ WordPad หรือสิ่งที่จะเปลี่ยนความกว้างของ Caret จากนั้นปิดการใช้งานตัวเลือก
คุณสามารถเปลี่ยนตัวเลือกเหล่านี้ได้จากเมนูคลิกขวาของไอคอนถาดงาน (ค้นหา VimMenu Settings ในรายการ) หรือเปิดหน้าต่างการตั้งค่าโดย Ctrl-Alt-Shift-v
ที่นี่คุณสามารถเพิ่มแอปพลิเคชันเปลี่ยนคีย์เปลี่ยนโหมดหรือเปลี่ยนระดับ verbose
หากคุณกด Reset การตั้งค่าเริ่มต้นจะแสดงในหน้าต่าง การตั้งค่าเหล่านี้จะเปิดใช้งานเฉพาะในกรณีที่คุณกดปุ่ม OK
การตั้งค่าเริ่มต้น เหล่านี้ถูกเขียนทับโดยตัวเลือก VimXXX ของคุณในสคริปต์ของคุณที่อธิบายไว้ข้างต้น (เช่น 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 เป็นกุญแจสำคัญในการเลือกอักขระ, Line-Wise และโหมด Visual Block-Wise ตามลำดับ
หลังจากกด : มีคำสั่งสองสามคำสั่งเพื่อบันทึก/ออก
| คีย์/คำสั่ง | การทำงาน |
|---|---|
| ESC/CTRL- [ | เข้าสู่โหมดปกติ การถือครอง (0.5S) ปุ่มเหล่านี้เลียนแบบ ESC/Ctrl- [ |
| JJ | เข้าสู่โหมดปกติหากเปิดใช้งาน |
| ตัวอักษรสองตัวที่กำหนดเอง | หากตั้งค่าการทำแผนที่สองตัวอักษร |
ESC/CTRL- [ปิด IME ถ้า IME เปิดอยู่ ESC ทำหน้าที่เป็น ESC เมื่อ IME เปิดและแปลงคำแนะนำ Ctrl- [ปิด IME และเข้าสู่โหมดปกติแม้ว่า IME จะเปิดอยู่
Long Press ESC (Ctrl- [) จะส่งคีย์ดั้งเดิมเหล่านี้หาก VimLongEscNormal ( VimLongCtrlBracketNormal ไม่ได้เปิดใช้งาน (0)
หากเปิดใช้งาน VimLongEscNormal ( VimLongCtrlBracketNormal ) การกดครั้งเดียวจะส่งคีย์ดั้งเดิมและการกดยาวจะเปลี่ยนโหมดเป็นโหมดปกติ
หากใช้ฮอตคีย์สองตัวอักษรที่กำหนดเองเพื่อเข้าสู่โหมดปกติตัวอักษรสองตัวจะต้องแตกต่างกัน
คำเตือน
ตัวละครสามารถใช้ได้เพียงหนึ่งฮอตคีย์สองตัวอักษร หากคุณระบุ ab และ bc , ba (PUSH 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 | ย้ายไปที่จุดสิ้นสุดของคำ (อันที่จริงย้ายไปที่จุดเริ่มต้นของคำถัดไปและย้ายตัวละครตัวหนึ่งไปทางซ้าย) |
| BB | ย้ายไปที่จุดเริ่มต้นของคำก่อนหน้า |
| CTRL-U/CTRL-D | ขึ้น/ลง 10 บรรทัด |
| CTRL-B/CTRL-F | PageUp/Pagedown |
| GG/G | ไปที่ด้านบน/ล่างของไฟล์ |
| ช่องว่าง | ขวา. |
| เข้า | ย้ายไปที่จุดเริ่มต้นของบรรทัดถัดไป |
บันทึก
ป้อนผลงานเฉพาะสำหรับแอปพลิเคชันตัวแก้ไข (สำหรับ Explorer, Q-DIR, มันทำงานเป็น Enter แม้ในโหมดปกติ)
นอกจากนี้ยังมีการ Repeat สำหรับคำสั่งบางอย่าง
| คำสั่งตัวอย่าง | การกระทำ |
|---|---|
| 4J | ลง 4 บรรทัด |
| 3W | ย้าย 3 คำไปข้างหน้า |
| 100J | ลง 100 บรรทัด |
| คีย์/คำสั่ง | การทำงาน |
|---|---|
| yy, y | คัดลอกบรรทัด |
| DD | ตัดเส้น |
| d | ตัดจากที่นี่ไปยังจุดสิ้นสุดของบรรทัด |
| ซีซี | เปลี่ยนบรรทัด (เข้าสู่โหมดแทรก) |
| 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 | ค้นหาถัดไป/ก่อนหน้า (บางแอปพลิเคชันสนับสนุนการค้นหาถัดไปเท่านั้น) |
| - | ค้นหาคำใต้เคอร์เซอร์ |
| ZZ/ZQ | บันทึกและเลิก/ออก |
| คีย์/คำสั่ง | การทำงาน |
|---|---|
| ESC/CTRL- [ | เข้าสู่โหมดปกติ |
| ย้ายคำสั่ง | คำสั่งการย้ายส่วนใหญ่ในโหมดปกติมีให้บริการ |
| y/d/x/c | คัดลอก/ตัด/ตัด/ตัดและแทรก ( d = x ) |
| y/d/x/c | เลื่อนไปที่ส่วนท้ายของบรรทัดจากนั้นคัดลอก/ตัด/ตัด/ตัดและโหมดแทรก ( D = X ) |
| IW | เลือกคำปัจจุบัน |
| - | ค้นหาคำที่เลือก |
| คีย์/คำสั่ง | การทำงาน |
|---|---|
| ESC/CTRL- [ | เข้าสู่โหมดปกติ |
| W + return | บันทึก |
| W + Space | ประหยัด |
| W + Q | บันทึกและออก |
| ถาม | ล้มเลิก |
| ชม. | เปิดความช่วยเหลือของแอปพลิเคชัน |
อ้างอิง Ranger ซึ่งเป็นตัวจัดการไฟล์คอนโซลที่มีการผูกคีย์ VI
| คีย์/คำสั่ง | การทำงาน |
|---|---|
| h/j/k/l | backspace (ส่งคืนไปยังไดเรกทอรีหลัก)/down/up/enter (ป้อนไดเรกทอรีที่เลือกหรือเปิดไฟล์) |
| alt+u/i/j/k | สลับระหว่างรูปสี่เหลี่ยมจัตุรัส |
| - | เมนูการเชื่อมโยงอย่างรวดเร็ว |
การทดสอบดำเนินการโดยดำเนินการ tests/run_vimahk_tests.ahk เปิดหน้าต่าง Notepad และ Vim และ VIM_AHK เริ่มต้นขึ้น
ระบบทดสอบที่ใช้เป็นชุดของกรณีทดสอบใน tests/testcases.txt แทนการกดแป้นพิมพ์เพื่อส่งไปยัง vim_ahk สิ่งเหล่านี้จะถูกส่งไปยังหน้าต่าง VIM และ Notepad ที่เปิดอยู่และเปรียบเทียบข้อความที่ได้
การทดสอบอาจเป็นไปได้มากดังนั้นควรใช้เป็นคู่มือและดำเนินการเส้นทางรหัสเพื่อตรวจสอบข้อผิดพลาด การทดสอบควรทำงานด้วยค่าเริ่มต้น INI