2

カスタムキーボードレイアウトがあります。そのため、vim コマンドhjkおよびlを他の文字にバインドしました。たとえば、 にバインドjしましenmap e j

これに関する問題は、オペレーター保留モードでは、eを意味jしたい場合もあれば、 を意味したい場合もありますe。たとえば、私が押しているときdeは を意味したいのですdjが、押しteているときは を意味したいのですte

この問題を解決する方法はありますか?

できますomap de djが、入力してさらに行を削除したい場合は機能しませんd3e。番号を一致させる方法があった場合 (そうは思わないか、あるのでしょうか?)、たとえば # を使用すると、 のようなものにすることができomap d#e d#jます。または、オペレーター保留モードで既に入力した内容に応じて、マッピングを変更する方法があるかもしれません。

4

1 に答える 1

4
  1. ではなく、 でこれを行うことを検討する必要はほとんど*noremapありません*map
  2. nnoremap e j台無しにすることはできませんte。どちらもできませんonoremap e j:tは演算子ではなく、演算子保留モードを呼び出しません。
  3. omap de djは、通常モードでde押されたものとは関係ありません。このマッピングを呼び出すには、 を押す必要があります。Andは:の意味の変更とは関係ありません(オペレーター保留モードは operator によって呼び出されますが、 operatorは通常モードで入力する必要があります。どちらも呼び出しモードの一部ではありません)。ddennoremap e jdeonoremap e jd
  4. 基本的な移動キーの再マッピングは、 、、または何かnoremapを先行せずに が必要なまれなケースの完璧な例です。やってみるnov

    noremap e j
    

    再マップするすべてのキーに対して、これで十分です。

  5. モードの開始時に再マッピングは行われないため、行う必要はありませんonoremap 3e 3j。->onoremap e jを行うことも可能にします。そして同等ですd3ed3jnoremap e j

    nnoremap e j
    onoremap e j
    vnoremap e j
    
于 2012-05-30T19:32:26.333 に答える