在用户定义的命令中调用另一个用户命令

时间:2013-09-28 10:20:17

标签: vim

是否无法在用户定义的命令中调用另一个用户定义的命令?

我尝试了以下两行,但它们都没有奏效:

command! GetRapidLinks FindRapidLinks|MatchesOnly

command! GetRapidLinks :FindRapidLinks|:MatchesOnly

Vim帮助读取:

  

您不能使用“:X”,“:Next”和“:Print”

此限制的背景尚不清楚。我想在用户定义的命令中不能使用那些,对吗?

3 个答案:

答案 0 :(得分:1)

这可能是因为您未使用:FindRapidLinks定义-bar命令;没有它,命令“吃掉”所有剩余的参数(cp。:help command-bar)。所以,重新定义:

:command! -bar FindRapidLinks ...
:command! GetRapidLinks FindRapidLinks|MatchesOnly

或通过:execute解决此问题(对于无法重新定义其他命令的情况):

:command! GetRapidLinks execute 'FindRapidLinks'|MatchesOnly

作为一般规则,请使用-bar,除非您的自定义命令需要传递包含|等特殊字符的参数。

答案 1 :(得分:0)

实际上,帮助意味着什么,您无法调用用户命令:Next:X,因为这些是内置的少数几个命令用大写字母。我不确定,为什么你的vim实际上说,你不能定义:Print命令,因为可以定义你自己的自定义:Print命令(因为内置命令只是一个别名无论如何:print

我不确定,你究竟想在这里实现什么,所以我无法回答你问题的第一部分。但是,您可以在函数或自定义命令中调用另一个自定义命令。

答案 2 :(得分:-1)

或许尝试反击“(不要误以为引号'或”)

例如。

command! GetRapidLinks `FindRapidLinks` | MatchesOnly

command! GetRapidLinks $(FindRapidLinks) | MatchesOnly