有没有办法覆盖 vim 的默认命令?
Is there a way to overwrite vim's default command?
我想将 :bd
映射到 :bd!
使用:
command! -nargs=* -complete=buffer bd :call bd!
但是vim告诉我"User defined commands must start with an uppercase letter"
根据答案更新解决方案:
cnoremap bd bd!
另一种方式
cnoreabbrev <expr> bd getcmdtype() == ":" && getcmdline() == 'bd' ? 'bd!' : 'bd'
您可以创建一个 "user-defined" 命令来包装目标命令,在您的例子中是 bd
。然后你必须让命令名称以大写字母开头。
实际上,如果我理解你的需求是正确的,你希望在命令模式下键入 bd
时始终执行 bd!
,那么你可以创建一个映射:
cnoremap bd bd!
这样,当您键入 :bd
时,!
将自动出现。
P.S.
当您使用 call
时,您调用的是 function()
而不是命令。
我想将 :bd
映射到 :bd!
使用:
command! -nargs=* -complete=buffer bd :call bd!
但是vim告诉我"User defined commands must start with an uppercase letter"
根据答案更新解决方案:
cnoremap bd bd!
另一种方式
cnoreabbrev <expr> bd getcmdtype() == ":" && getcmdline() == 'bd' ? 'bd!' : 'bd'
您可以创建一个 "user-defined" 命令来包装目标命令,在您的例子中是 bd
。然后你必须让命令名称以大写字母开头。
实际上,如果我理解你的需求是正确的,你希望在命令模式下键入 bd
时始终执行 bd!
,那么你可以创建一个映射:
cnoremap bd bd!
这样,当您键入 :bd
时,!
将自动出现。
P.S.
当您使用 call
时,您调用的是 function()
而不是命令。