我该如何映射: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)
这会触发以下EEnter或ESpace.前者是需要的,因为键入: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仍然会含糊不清.