Mengatur file/exe file autohotkey untuk emulasi vim.
vim.ahk adalah file pengaturan untuk autohotkey (autohotkey_l).
Vim.exe adalah aplikasi mandiri yang dibuat dari vim.ahk (tersedia di halaman rilis).
Ini adalah emulasi vim untuk windows. Jika Anda tertarik dengan pengaturan yang sama untuk Mac, coba emulasi VIM untuk Karabiner - Perangkat Lunak untuk MacOS: Karabiner -Elements Complex_modifications Aturan oleh RCMDNK.
Script ini untuk Autohotkey V2.
Jika Anda menggunakan Autohotkey V1, silakan gunakan rilis V0.13.2 (atau cabang AHK_V1).
Jika Anda sudah menginstal autohotkey, cukup buka vim.ahk dengan autohotkey.
Jika Anda menjalankan autohotkey dengan skrip lain, Anda dapat memasukkannya ke dalam skrip Anda menggunakan autohotkey ... silakan salin vim.ahk dan direktori lib di Users%username%Documents atau di mana skrip berada, dan tambahkan baris berikut di autohotkey.ahk atau skrip Anda:
#Include %A_LineFile%..vim.ahk
di akhir bagian eksekusi otomatis.
Anda juga dapat menggunakan vim_ahk.exe , yang dapat bekerja dengan mandiri dengan autohotkey.
Untuk dapat dieksekusi, buka halaman rilis dan unduh file zip terbaru.
Buka zip file zip, dan letakkan folder VIM_AHK yang diekstraksi di mana Anda suka, lalu meluncurkan vim_ahk.exe .
Catatan
Tempatkan folder vim_ahk_icons di folder yang sama dengan vim_ahk.exe , jika tidak, fitur ikon menu baki tidak berfungsi.
Klone Vim_ahk dan go folder VIM_AHK, dan jalankan build.bat .
.build.bat di PowerShell atau command prompt.Anda akan menemukan folder VIM_AHK yang berisi vim_ahk.exe dan vim_ahk_icons .
Pengaturan default memungkinkan mode VIM untuk aplikasi berikut:
Anda dapat mengubahnya dari menu klik kanan ikon baki tugas (temukan VimMenu - Settings dalam daftar), atau luncurkan jendela pengaturan oleh Ctrl-Alt-Shift-v .
Jika Anda ingin mengubah aplikasi secara langsung dalam skrip, tambahkan variabel VimGroup sebelum Vim := new VimAhk() di vim.ahk (judul/kelas jendela dapat diperiksa dengan mata -mata jendela autohotkey), atau tulis sebelum termasuk vim.ahk
Contoh baris:
VimGroup := "ahk_exe chrome.exe,ahk_exe firefox.exe"
Beberapa aplikasi dapat ditulis oleh yang dipisahkan secara koma.
Catatan
Ini akan menimpa aplikasi default. Jika Anda ingin menambahkan aplikasi ini ke aplikasi default, tambahkan aplikasi berikut setelah aplikasi Anda:
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
Atau Anda dapat menggunakan menu pengaturan opsi GUI yang dijelaskan di bawah ini.
Pengaturan default VimSetTitleMatchMode adalah 2, yang membuat metode pencocokan seperti Contain .
Jika Anda mengatur OneNote , semua Windows dengan judul yang berisi OneNote (misalnya XXX's OneNote ) akan disertakan. Jika Anda mengatur VimSetTitleMatchMode sebagai 3, hanya judul yang tepat dari OneNote yang akan dimasukkan.
Ini mungkin tidak bekerja pada OneNote. OneNote mungkin memiliki nama jendela seperti notebook pengguna - OneNote , bukan OneNote .
Dalam hal ini, Anda perlu memeriksa judul jendela OneNote dengan Window Spy.
Window Spy akan memberi Anda tentang judul jendela, kelas, dan proses seperti:
User's Notebook - OneNote
ahk_class ApplicationFrameWindow
ahk_exe ApplicationFrameHost.exe
Jika Anda menambahkan salah satu baris di atas ke VimGroup, VIM_AHK bekerja di OneNote. Tetapi jika Anda mengatur ahk_class ApplicationFrameWindow atau ahk_exe ApplicationFrameHost.exe , VIM_AHK juga bekerja pada aplikasi lain yang menggunakan nama kelas/proses ini (sebagian besar aplikasi yang diinstal dari Microsoft Store).
Contoh aplikasi:
ahk_exe chrome.exeahk_exe firefox.exeahk_exe EXCEL.EXEahk_exe soffice.bin (untuk semua aplikasi LibreOffice) Selain VimGroup , ada opsi berikut yang dapat Anda atur dalam skrip Anda. Semua ini juga dapat diubah dari menu pengaturan.
| Pilihan | Keterangan | Bawaan |
|---|---|---|
| Vimescnormal | Jika 1, pers pendek ESC mengatur mode normal, sementara long press ESC mengirim ESC. | 1 |
| Vimsendescnormal | Jika 1, pers pendek ESC mengirim ESC dalam mode normal. | 0 |
| Vimlongescnormal | Jika 1, pers pendek dan pers perilaku ESC yang panjang ditukar. | 0 |
| Vimctrlbrackettoesc | Jika 1, Ctrl- [berperilaku sebagai ESC. Jika vimctrlbracketnormal adalah 0, ctrl- [mengirimkan esc. Jika vimctrlbracketnormal adalah 1, tekan panjang ctrl- [mengirimkan esc. | 0 |
| Vimctrlbracketnormal | Jika 1, mendorong Ctrl- [mengatur mode normal, sementara tekan lama ctrl- [mengirimkan ctrl- [. | 1 |
| Vimsendctrlbracketnormal | Jika 1, tekan pendek ctrl- [kirim ctrl- [dalam mode normal. | 0 |
| Vimlongctrlbracketnormal | Jika 1, pers pendek dan tekan panjang Ctrl- [perilaku ditukar. | 0 |
| Vimchangecaretwidth | Jika 1, periksa karakter di bawah kursor sebelum tindakan. Saat ini ini digunakan untuk: a dalam mode normal (periksa apakah kursor terletak di ujung garis). | 0 |
| Vimrestoreime | Jika 1, status IME dipulihkan saat memasuki mode insert. | 1 |
| Vimjj | Jika 1, jj mengubah mode ke mode normal dari mode insert. | 0 |
| Vimtwoletteresc | Daftar pasangan karakter untuk ditekan bersama selama mode insert untuk mencapai mode normal. Misalnya, nilai jf berarti menekan j dan f pada saat yang sama akan memasuki mode normal.Kombinasi berganda dapat diatur dengan dipisahkan oleh , . (misalnya jf,jk,sd ) | |
| Vimdisableunused | Nonaktifkan tingkat tombol yang tidak digunakan di selain mode insert:
| 3 |
| VimsettitleMatchMode | SetTitLeMatchMode:
| 2 |
| VimsettitleMatchModefs | SetTitLeMatchMode:
| Cepat |
| VimiconCheckInterval | Interval untuk memeriksa status VIM_AHK (MS) dan ubah ikon baki (lihat gambar di bawah). Jika diatur ke 0, ikon AHK asli diatur dan tidak diubah. | 1000 |
| Vimverbose | Level Verbose:
| 1 |
| Vimapplist | Penggunaan Daftar Aplikasi:
| Izinkan daftar |
| Vimgroup | Aplikasi di Witch Vim_ahk diaktifkan. | Lihat bagian Aplikasi |
Anda dapat menambahkan opsi Anda sebelum memasukkan vim.ahk dalam skrip Anda di bagian Execute Otomatis seperti:
VimVerbose := 2
#Include pathtovim.ahk
Jika Anda ingin mengubahnya langsung dalam skrip vim.ahk, tambahkan variabel ini sebelum Vim := new VimAhk() .
Catatan
Variabel VIM ini akan menimpa nilai default dan nilai awal. Setelah memeriksa variabel -variabel ini, file konfigurasi dibaca. Jika Anda sudah menjalankan VIM_AHK, file konfigurasi dibuat dan semua pengaturan disimpan. Untuk mencerminkan pengaturan baru, coba Reset di jendela pengaturan opsi GUI.
Catatan
Contoh VimiconCheckInterval
Jika Anda mengatur vimiconCheckInterval sebagai non-nol, ikon baki diubah saat Anda mengubah mode atau mengubah aplikasi menjadi VIM_AHK diaktifkan atau tidak diaktifkan.
Peringatan
Vimchangecaretwidth
Lebar karet hanya dapat diubah pada aplikasi tertentu: WordPad, Word, atau OneNote. Pada Notepad atau Explorer, lebar karet disimpan tetapi tidak berubah.
Untuk sebagian besar aplikasi lain, lebar karet disimpan sebagai lebar aslinya.
Ketika opsi ini diaktifkan, jendela saat ini secara singkat kehilangan fokus ketika mode diubah.
Jika Anda mengaktifkan opsi ini dan mengubah lebar karet tebal dalam mode normal, dan nonaktifkan opsi, lebar kursor dijaga setebal. Untuk membalikkan lebar karet, mengaktifkan kembali opsi dan memasukkan mode insert di WordPad atau sesuatu untuk mengembalikan lebar karet, kemudian nonaktifkan opsi.
Anda dapat mengubah opsi ini dari menu klik kanan ikon baki tugas (temukan VimMenu - Settings dalam daftar), atau luncurkan jendela pengaturan oleh Ctrl-Alt-Shift-v .
Di sini, Anda dapat menambahkan aplikasi, mengubah tombol perubahan mode, atau mengubah level verbose.
Jika Anda mendorong Reset , pengaturan default akan ditampilkan di jendela. Pengaturan ini akan diaktifkan hanya jika Anda menekan tombol OK .
Pengaturan default ini ditimpa oleh opsi VimXXX Anda di skrip Anda yang dijelaskan di atas. (IE Reset akan mengembalikan opsi Anda dalam skrip selain pengaturan default VIM_AHK.)
| Kunci | Fungsi |
|---|---|
| CTRL-ALT-SHIFT-V | Luncurkan Jendela Pengaturan Opsi GUI. |
| Ctrl-alt-shift-s | Tangguhkan/restart VIM_AHK. |
| CTRL-ALT-SHIFT-C | Tampilkan jendela Periksa Status. (Hanya pada aplikasi vimgroup.) |
Berikut adalah mode utamanya.
| Mode | Keterangan |
|---|---|
| Sisipkan mode | Status Windows Asli |
| Mode normal | Seperti di VIM, kursor digerakkan oleh hjkl , w , dll ... dan beberapa perintah seperti Vim tersedia. |
| Mode visual | Ada tiga mode visual: karakter-bijaksana, segi garis, dan blok-bijaksana. Mode visual blok-bijaksana hanya valid untuk aplikasi yang mendukung pemilihan blok-bijaksana (terapad seperti itu). |
| Mode Perintah | Dapat digunakan untuk menyimpan file/berhenti. |
Keadaan awal adalah mode insert, kemudian ESC atau Ctrl-[ membawa Anda ke mode normal.
Dalam mode normal, i adalah kunci untuk kembali ke mode insert.
v , V dan Ctrl-v adalah kunci untuk karakter-bijaksana, segi garis, dan mode visual blok-bijaksana, masing-masing.
Setelah menekan : , beberapa perintah untuk menyimpan/berhenti tersedia.
| Kunci/perintah | Fungsi |
|---|---|
| ESC/CTRL- [ | Masukkan mode normal. Memegang (0,5S) tombol-tombol ini meniru ESC/CTRL- [. |
| JJ | Masukkan mode normal, jika diaktifkan. |
| Kustom dua huruf | Jika pemetaan dua huruf diatur. |
ESC/CTRL- [matikan IME jika IME aktif. ESC bertindak sebagai ESC ketika IME menyala dan mengonversi instruksi. Ctrl- [mematikan IME dan memasuki mode normal bahkan jika IME aktif.
Long Press ESC (Ctrl- [) akan mengirim tombol asli ini, jika VimLongEscNormal ( VimLongCtrlBracketNormal tidak diaktifkan (0).
Jika VimLongEscNormal ( VimLongCtrlBracketNormal ) diaktifkan, satu pers akan mengirim tombol asli dan pers panjang akan mengubah mode ke mode normal.
Jika menggunakan hotkey dua huruf khusus untuk memasuki mode normal, kedua huruf harus berbeda.
Peringatan
Karakter hanya dapat digunakan untuk satu hotkey dua huruf. Jika Anda menentukan ab dan bc , ba (dorong b pertama dan kemudian a ) tidak berfungsi. Jika Anda mendorong a pertama, maka ab akan bekerja.
| Kunci/perintah | Fungsi |
|---|---|
| I/I/A/A/O/O. | Masukkan mode Sisipkan di bawah kursor/mulai dari baris/di sebelah kursor/ujung baris/baris berikutnya/baris sebelumnya. |
| v/v/ctrl-v | Masukkan mode visual dari karakter-bijaksana/garis-bijaksana/blok-bijaksana. |
| : | Masukkan mode baris perintah |
| Kunci/perintah | Fungsi |
|---|---|
| h/j/k/l | Kiri/bawah/ke atas/kanan. |
| 0/$ | Pindah ke awal/akhir garis. |
| CTRL-A/CTRL-E | Pindah ke awal/akhir garis (EMACS seperti). |
| ^ | Pindah ke karakter awal non-whitespace dari garis. |
| w/w | Pindah ke awal kata berikutnya. |
| e/e | Pindah ke akhir kata. (Sebenarnya, pindah ke awal kata berikutnya dan pindahkan satu karakter ke kiri.) |
| b/b | Pindah ke awal kata sebelumnya. |
| CTRL-U/CTRL-D | Naik/turun 10 baris. |
| Ctrl-B/Ctrl-F | PageUp/Pagedown. |
| gg/g | Pergi ke bagian atas/bawah file |
| Ruang angkasa | Benar. |
| Memasuki | Pindah ke awal baris berikutnya. |
Catatan
Masukkan karya hanya untuk aplikasi editor (untuk selain Explorer, Q-DIR, ia berfungsi sebagai Enter bahkan dalam mode normal).
Selain itu, Repeat juga tersedia untuk beberapa perintah.
| Contoh Perintah | Tindakan |
|---|---|
| 4J | Turun 4 baris |
| 3w | Pindah 3 kata ke depan |
| 100J | Turun 100 baris |
| Kunci/perintah | Fungsi |
|---|---|
| yy, y | Salin baris. |
| dd | Potong garis. |
| D | Potong dari sini ke ujung garis. |
| CC | Ubah garis (masukkan mode insert). |
| C | Potong dari sini ke ujung garis dan masukkan mode insert. |
| x/x | Hapus karakter di bawah/sebelum kursor (tidak terdaftar di clipboard). |
| p/p | Tempel ke tempat berikutnya/saat ini. Jika Copy/Cut dilakukan dengan mode visual garis-bijaksana, itu menempel ke baris berikutnya/saat ini. Beberapa perintah (yy/dd) juga memaksa untuk menempel sebagai garis-bijaksana. |
| yiw/diw/ciw | Salin/potong/ubah kata saat ini. |
Perintah Y/D/C+MOVE juga dapat digunakan.
yw -> Salin satu kata berikutnya.d3w -> hapus 3 kata berikutnya.| Kunci/perintah | Fungsi |
|---|---|
| u/ctrl-r | Undo/redo. |
| r/r | Ganti satu karakter/beberapa karakter. |
| J | Gabungkan dua baris. |
| . | Itu diperbaiki untuk dilakukan: Replace the following word with a clipboard (berguna untuk digunakan dengan pencarian). |
| ~ | Ubah kasing. |
| / | Mulai Cari (kotak pencarian akan dibuka) |
| n/n | Cari Berikutnya/Sebelumnya (Beberapa Aplikasi Dukungan Hanya Pencarian Berikutnya) |
| * | Cari kata di bawah kursor. |
| ZZ/ZQ | Simpan dan berhenti/berhenti. |
| Kunci/perintah | Fungsi |
|---|---|
| ESC/CTRL- [ | Masukkan mode normal. |
| Pindahkan perintah | Sebagian besar perintah pindahkan dalam mode normal tersedia. |
| y/d/x/c | Salin/potong/potong/potong dan masukkan ( d = x ) |
| Y/d/x/c | Pindah ke ujung garis, lalu salin/potong/potong/potong dan mode masukkan ( D = X ) |
| IW | Pilih kata saat ini. |
| * | Cari kata yang dipilih. |
| Kunci/perintah | Fungsi |
|---|---|
| ESC/CTRL- [ | Masukkan mode normal. |
| W + kembali | Menyimpan |
| W + Space | Simpan sebagai |
| W + q | Simpan dan Berhenti |
| Q | Berhenti |
| H | Buka Bantuan Aplikasi |
Rujuk Ranger yang merupakan manajer file konsol dengan binding kunci VI.
| Kunci/perintah | Fungsi |
|---|---|
| h/j/k/l | Backspace (kembali ke direktori induk)/turun/up/enter (masuk ke direktori yang dipilih atau membuka file) |
| Alt+u/i/j/k | Beralih di antara quad-directory |
| ' | menu tautan cepat |
Tes dijalankan dengan mengeksekusi tests/run_vimahk_tests.ahk . Jendela Notepad dan Vim dibuka, dan Vim_ahk dimulai.
Sistem pengujian yang digunakan adalah serangkaian kasus uji dalam tests/testcases.txt mewakili tombol untuk dikirim ke VIM_AHK. Ini dikirim ke jendela VIM dan notepad terbuka, dan teks yang dihasilkan dibandingkan.
Tes bisa sangat serpihan, jadi harus digunakan sebagai panduan dan untuk menjalankan jalur kode untuk memeriksa kesalahan. Tes harus dijalankan dengan INI default.