1

私はvimで自分のキーバインディングを定義したい(デフォルトのものをオーバーライドする):

1)オペレーターをマッピングする方法は?たとえば、削除演算子を「l」キーにマップしたいので、llは行全体を削除し、現在の単語をlwします。

2)オペレーターのマップを解除するにはどうすればよいですか?削除演算子をdキーからマップ解除したいので、このキー(d)を別の目的に使用できます。単に、「d」キーを別のアクション(nmap dkなど)に再マップしようとしましたが、これにより1つの遅延が発生します。 「d」を押したときの2番目(vimがモーションを待機しているため)。

これを行う主な理由は、キーボードに数字キーパッドがあることです。数字を入力するたびに右手をテンキーから数字パッドに切り替えたくありません(これは頻繁に発生します)。変更することを好みますhjklをasdfに変更し、左手を動きと特殊キー(crtl、shift、esc)に固定し、右手を他のコマンドに使用します。そうすることで私の生産性は大幅に向上します。

4

1 に答える 1

1

d のマップを解除して、他の目的のために解放することはできません。あなたもする必要はありません:

nnoremap l d

lと同じことを行うようにマップされますd(注: これは許可されませんll)。

nnoremap d {some-other-thing}

dここで何かを解放する必要はありません。さらに、上記のすべてを実行した後

nnoremap l c

マッピングを解除しない場合lと同じ意味になります。コマンドは、引数が指定されていない限り、既存のマッピングをオーバーライドします。c*map<unique>


許可llするには、いくつかのオプションがあります。

nnoremap ll dd

また

onoremap l d

. 残念ながら、繰り返し文字と同じことを意味するモーションを知りませんが、オペレーターに依存しません。したがってll、最後のケースでは機能しますが、cl失敗するのと同じように失敗cdします。


ただし、常に別のマシンで作業している場合、それが可能であるという事実は良い考えではありません。知らないことがわかっていても、それは悪い考えではありません。誰もが他人のマシンを使うことを気にかけているなら、あなたはメモ帳を使っているでしょう++。.

于 2012-12-24T16:38:42.287 に答える