地图:E到:在命令模式下探索?

kef*_*ich 18 vim

我该如何映射:E:Explore?我已经安装了一个扩展,E464: Ambiguous use of user-defined command如果我:E现在这样做,但我的手指不会忘记命令!

我试过了map :E :Explore,但这很难看,因为它使访问其他命令变得困难.

我试过这些:

cmap :E<CR> :Explore<CR>
cmap :E^M :Explore^M
Run Code Online (Sandbox Code Playgroud)

(其中^M= control-v + enter)但这些不起作用,除非我真的非常快速地输入.

Nik*_*vda 35

:E通常就足够了如果:Explore是唯一定义的命令以一个开头的E.您显然已定义了多个此类命令,因此:E不明确并导致错误.

:cmap导致立即文字替代,从而产生不必要的副作用.一个稍微好一些的替代方案:cabbrev,可用于定义命令模式的缩写:

cabbrev E Explore
Run Code Online (Sandbox Code Playgroud)

这会触发以下EEnterESpace.前者是需要的,因为键入:EEnter将调用:Explore,但后者在命令模式下再次具有副作用.

为了:E正确别名:Explore,必须将其定义为单独的命令:

command! E Explore
Run Code Online (Sandbox Code Playgroud)

但是,: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>
Run Code Online (Sandbox Code Playgroud)

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

NB如果:Explore:Example已定义,:Exp并且:Exa是可以使用的最短的明确命令.:E如上所述,显式别名为其中一个,会覆盖Vim的默认行为并允许消除歧义.但是,:Ex仍然会含糊不清.

  • 打开资源管理器的另一种快速方法是使用`:e.这将`:Explore`当前目录.这也有不需要换档键的好处. (11认同)