This page is a translation for version 4.3.3.
For the latest version 5.13.2, please refer to the original document.
このソフトウェアは、実機のWindows 10またはWindows 11のみをサポートしています。したがって、それ以前のWindowsやWineやVirtual Boxなどの仮想環境では動作しない可能性があります。問題や要望がありましたら、 GitHub Issuesへお寄せください。日本語でも構いません。
インストール方法
- お好みに合ったタイプの最新版をDownlodsページからダウンロードし、インストールしてください。
- その後、win-vind.exeを実行します。
- タスクトレイにアイコンが表示されていれば適切に動作しています。
Like this
備考
:exitは推奨の終了コマンドです。<F8> + <F9>は安全な強制終了コマンドです。- win-vindは自分より高い権限を持つウィンドウを操作できません。例えば、最も高位の権限を持つタスクマネージャを選択すると、win-vindによるマウスの移動、クリック、スクロールなどができなくなります。すべてのウィンドウを操作したい場合には、win-vindを管理者権限で実行することをお勧めします。その場合には、タスクスケジューラをご利用ください。
簡単なチュートリアル
1. モード遷移
基本的な概念はVimと同じですが、二つのNormalモードと二つのVisualモードとResidentモードがあります。
デフォルトのモード構成の概要
GUIモードとEditorモードの二つのグループがあります。前者ではウィンドウやマウスの操作などを行うことができ、後者はWebページの入力フォームやMicrosoft Office WordなどでVimエミュレーションを行うことができます。
GUIモードとEditorモードの概略図
Residentモードは、Steamでのゲーム中やVimの使用中にそれらのショートカットキーと衝突するのを防ぐための退避モードです。例えば、忠実なVimエミュレーションのためにInsertモードのキーマップに<Esc>を追加した場合には、Residentモードに遷移することでVimの<Esc>によりwin-vindが呼び出されるのを防ぐことができます。
InsertモードとResidentモードはすべてのに入力メッセージをWindowsへ伝えますが、GUI Normalモード、 GUI Visualモード、Edi Normalモード、Edi Visualモード、Commandモードはすべてブロックします。
モードの視覚的概念
起動直後はInsertモードです。上の図を参考にモードの遷移を行ってみてください。
2. GUIの操作とウィンドウの操作
<Esc-Left>でGUI Normalモードに切り替えます。:!mspaintと入力し、Microsoft ペイントを起動します。FFコマンドにより、EasyClickを呼び出すことができます。
EasyClickの動作例
- 次に
<C-w>hや<C-w>lでウィンドウを選択できることを確認します。 - 最後にMicrosoft ペイントを選択し、
:closeでウィンドウを閉じます。
3. win-vindのカスタマイズ
win-vindはRun Commands形式の設定方法を採用しています。.vimrcを書いたことがあれば、簡単にカスタマイズできます。
キーマッピングには一般的にkey2key、keyset2keyset、cmd2cmdの3つのレベルがあります。key2keyは一つのキーを他のキーに割り当てます。keyset2keysetは、<c-s>から<m-h>のように、いくつかのキーの組み合わせから、別の組み合わせに割り当てます。cmd2cmdは、qqから<c-w>eのように時系列的なコマンド入力に反応し、別のコマンドを生成するマッピング方式です。
キーセットは、Vimと同様に<と>の内で-で繋ぐようにして表現します。ただし、<Esc-b-c-a-d>のように好きなだけ組み合わせることができます。
以下のコマンドがサポートされています。ただ、{と}自体は構文には含まれません。
| 構文 | 効果 |
|---|---|
set {option} |
オプションの値をtrueにします。 |
set no{option} |
オプションの値をfalseにします。 |
set {option} = {val} |
オプションのパラメータを設定します。値には文字列か浮動小数点を含む数値です。文字列には引用符は不要で、空白以外の文字以降が値として扱われます。ちなみに等号の両端の空白は無視されます。 |
{mode}map {in-key} {out-key} |
低レベルなcmd2cmdマッピングを行います。定義された低レベルマップは、実際にWindowsにキーストロークとして伝わります。key2keyset形式に限り、遅延なしにキーの状態を同期することができます。 |
{mode}noremap {in-cmd} {func-id} |
ファンクションを呼び出すためのマッピングを定義します。 |
{mode}noremap {in-keyset} {out-keyset} |
win-vindのスコープでcmd2cmdのマッピングを行います。ただし、{func-id}を利用した構文のほうが優先度が高いため、正確には1段階の再帰的なマッピングが生じる可能性があります。 |
{mode}unmap {in-cmd} |
{in-cmd}に割り当てられたマップを削除します。 |
{mode}mapclear |
すべてのマップを削除します。 |
command {in-cmd} {func-id} |
ファンクションを呼び出すためのコマンドを定義します。{in-cmd}に:は不要です。 |
delcommand {in-cmd} |
{in-cmd}に割り当てられたコマンドを削除します。 |
comclear |
すべてのコマンドを削除します。 |
source |
別の.vindrcを読み込みます。.vindrcへのパスを記入するか、user/repoという構文でGitHubリポジトリのルートの.vindrcを読み込みます。 |
{mode}は、モード接頭辞です。また、.vindrcはUTF-8フォーマットのみがサポートされています。
それでは最後のチュートリアルを行いましょう。
- まずはInsertモードに遷移します。
- 今回は
<F8>のInstant GUI Normalモードを試してみます。Instant GUI Normalモードは、一時的にGUI Normalモードへ遷移し、一度ファンクションが呼び出されたら元のモードに戻ります。
Instant GUI Normal Demo
:eで.vindrcを開きます。
:e Demo
.vindrcに次のようなコマンドを書き込みます。set cmd_fontname = Times New Roman imap <Capslock> <ctrl> inoremap <Alt> easy_click_left imap <ctrl-a> Vim is the best editor. gnnoremap <ctrl-1> :!notepad<cr>- 次のように
:sourceコマンドを実行すると.vindrcが読み込まれます。引数は不要です。
:source Demo
- Insertモードでは、Ctrlの代わりにCapslockを利用でき、Altキー一つでEasyClickを起動できるようになります。また、CtrlとAを同時に押すと、定型文を挿入できます。GUI Normalモードでは、Ctrlと1を同時に押すと、メモ帳が開くようになります。