20

我怎样才能映射:E:Explore?我已经安装了一个扩展,E464: Ambiguous use of user-defined command如果我: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

这会触发跟随EEnteror ESpace。前者是需要的,因为键入:EEnter会调用:Explore,但后者在命令模式下再次具有副作用。

为了:E正确地别名为:Explore,它必须定义为一个单独的命令:

command! E Explore

但是,:command E列出了所有以 开头的已定义命令E,揭示了这一点:E:Explore具有不同的属性。例如,:E ~由于:E不接受任何参数,因此无法执行。此外,与 不同的是:Explore:E不会自动完成目录。

为了弥补这些缺陷,:E必须以完全相同的方式定义:Explore. Executing显示了在其中定义:verbose command Explore的脚本的位置;然后可以以相同的方式定义,并添加::Explore:E<args>

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

虽然可以从 提供的信息中推断出大部分这些属性:command Explore,但仍然可能存在差异,例如-bar在这种情况下。

注意 如果:Explore:Example被定义,:Exp并且:Exa是可以使用的最短的明确命令。:E如上所述,显式别名为其中之一会覆盖 Vim 的默认行为并允许消除歧义。但是,:Ex仍然会模棱两可。

于 2013-01-16T20:45:57.387 回答