【问题标题】:Is there a way to overwrite vim's default command? [duplicate]有没有办法覆盖 vim 的默认命令? [复制]
【发布时间】:2020-04-08 12:07:12
【问题描述】:

我想将 :bd 映射到 :bd! 使用:

command! -nargs=* -complete=buffer bd :call bd!

但是 vim 告诉我“用户定义的命令必须以大写字母开头”


从答案更新解决方案:

cnoremap bd bd!

另一种方式

cnoreabbrev <expr> bd getcmdtype() == ":" && getcmdline() == 'bd' ? 'bd!' : 'bd'

【问题讨论】:

    标签: vim neovim


    【解决方案1】:

    您可以创建一个“用户定义”命令来包装目标命令,bd 在您的情况下。然后你必须让命令名以大写字母开头。

    事实上,如果我正确理解您的要求,您希望在命令模式下键入bd 时始终执行bd!,那么您可以创建一个映射:

    cnoremap bd bd!
    

    这样,当您输入:bd 时,! 将自动出现。

    附言

    当您使用call 时,您调用的是function() 而不是命令。

    【讨论】:

    • 我看到it recommended 应该始终使用cnoremap 而不是cmap
    • @chepner thx,我改变了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-18
    • 1970-01-01
    • 2020-05-11
    • 2010-09-24
    相关资源
    最近更新 更多