20

:Eにマップするにはどうすればよい:Exploreですか? E464: Ambiguous use of user-defined command今ならifにつながる拡張機能をインストールしたのです:Eが、指がコマンドを忘れません!

を試しmap :E :Exploreましたが、他のコマンドへのアクセスが困難になるため、これは醜いです。

私はこれらを試しました:

cmap :E<CR> :Explore<CR>
cmap :E^M :Explore^M

(ここで^M= control-v + enter) しかし、Enter キーを非常に速く押さない限り、これらは機能しません。

4

1 に答える 1

37

:E:Exploreで始まる唯一の定義済みコマンドである場合、通常はそのままで十分ですE。明らかにそのようなコマンドが複数定義されているため、:Eあいまいでエラーになります。

:cmap即時のリテラル置換を引き起こすため、望ましくない副作用があります。:cabbrevコマンドモードの略語を定義するために使用できる、わずかに優れた代替手段はです。

cabbrev E Explore

EEnterこれにより、次のまたはがトリガーされますESpace:EEnter入力すると が呼び出されるため、前者が望ましいです:Exploreが、コマンド モードでは後者にも副作用があります。

:Eに適切にエイリアスする:Exploreには、別のコマンドとして定義する必要があります。

command! E Explore

ただし、:command Eで始まるすべての定義済みコマンドを一覧表示する は、それをE明らかにし、異なるプロパティ:Eを持っています。:Exploreたとえば、は引数を受け入れないため、実行できません:E ~:Eまた、 とは異なり:Explore:Eはディレクトリをオートコンプリートしません。

これらの欠陥を修正する:Eには、 を とまったく同じ方法で定義する必要があります:Explore。実行すると、が定義さ:verbose command Exploreれているスクリプトの場所が表示されます。を追加して、同じ方法で定義できます。:Explore:E<args>

command! -nargs=* -bar -bang -count=0 -complete=dir E Explore <args>

によって提供される情報からこれらの属性のほとんどを推測することは可能ですが、この場合:command Exploreのように、依然として不一致が存在する可能性があります。-bar

注::Explore:Exampleが定義されている場合、:Exp:Exaは、使用できる最短の明確なコマンドです。上記のように、それらの 1 つに明示的にエイリアス:Eを設定すると、Vim のデフォルトの動作がオーバーライドされ、あいまいさを解消できます。ただし、:Exまだあいまいです。

于 2013-01-16T20:45:57.387 に答える