2

多くの人がorにマップする方法について質問し、書いていますが、キーを挿入モードと通常モードの間のトグルとして使用したいと思っています。Caps LockEscControlCaps Lock

ShiftCaps Lock(その後、長い CONSTANT 名を入力するときのように、 a Caps Lockalone が通常行うことを実行したいと思いCaps Lockます。しかし、実際に達成する方法がある場合、それは実際には別の質問であり、後で取得します。最初の部分. これはすべて不可能かもしれません.)

私は最近仕事で主に Windows を使用しているので、それが現時点で最も気にかけていることです。(これには Windows のみの何らかのハッキングが含まれる可能性が高いため、私も使用している OS X については別の質問をします。)

4

2 に答える 2

2

あなたの要求は珍しいので、デフォルトのモード切り替えからそれほど逸脱しないことをお勧めしますが、これを試すことができます:

  1. Caps Lockまず、オペレーティング システム固有の方法を使用して (言及したリンクで概説されているように)、キーを別の (未使用、たとえば) キーに再マップする必要があります。F12これは、特殊な Caps Lock を Vim 内で再マップできないためです。
  2. 次に、モードを変更するリマップされたキーに対して 2 つの Vim マッピングを定義します。

簡単な例を次に示します。

:nnoremap <F12> a
:inoremap <F12> <Esc>

次に、Caps Lock キー (F12 に再マッピング) を使用して、挿入モードとコマンド モードを切り替えることができます。

于 2012-11-02T16:11:06.353 に答える
1

Vim でこれをネイティブに実行できるとは思いませんが、AutoHotKey を使用するとおそらく実行できるようです。私は Autohotkey の専門家ではありませんが、ここに私がまとめたものがあります。

ここの例から引用:

このスクリプトは Capslock キーを使用して、ホットキーに 2 つの異なる出力を提供します。+; を使用する必要があるかどうかはわかりません。: の代わりに、2 番目の部分でコマンド モードに切り替えます。

n=0
Capslock::
On := 1
If On=True {
Send i
On := False
} Else {
Send :
On := True
}
Return

上記のスクリプトはテストされていませんが、i (挿入) または : (コマンド モードの挿入) の送信を切り替える必要があります。残念ながら、これでは VIM の現在の状態を追跡できません。そのためには、私の AHK スクリプトを学習する必要があります (変数の使用方法、挿入時に「?」、「/」、「 esc'、':' など、実際のコードを送信するだけでなく、VIM モードを AHK に格納するために使用される変数を認識します)。

参考文献:

http://www.autohotkey.com/board/topic/68710-autohotkey-toggle-state-function/ http://www.autohotkey.com/docs/commands/SetNumScrollCapsLockState.htm http://www.autohotkey.com /board/topic/42379-トグルキー/

2番目の部分では、次のようなもので実行できるように見えます:

http://www.autohotkey.com/board/topic/51215-completely-disable-capslock/ http://www.autohotkey.com/board/topic/61-use-capslock-as-a-toggle/ http: //www.autohotkey.com/board/topic/68710-autohotkey-toggle-state-function/

完全にはわかりませんが、Capslock の変更を正しく認識するために、VIM のレジストリ編集を行いました。

http://www.autohotkey.com/docs/misc/Remap.htm#

于 2012-11-02T23:42:39.777 に答える