Vim布尔函数

时间:2011-08-01 16:12:47

标签: function vim boolean

我正在尝试在Vim中实现一个布尔函数并遇到一些麻烦,我确信有些东西我不知道。

为了清楚起见,我正在寻求实现一个函数,当使用!调用时,它会做相反的事情。

Vim有很多布尔函数,比如listpaste。在我的情况下,如果我有一个函数说,打开一个缓冲区,如:

:call MyFunction()

然后我希望在使用!

调用时关闭缓冲区
:call MyFunction()!

不确定这是否可行,我不是要找出如何打开或关闭缓冲区,而是实际的布尔实现。

编辑:

如果我们谈论用户定义的命令,这似乎更可行,例如:

:MyCommand action

也可以称为:

:MyCommand action!

1 个答案:

答案 0 :(得分:5)

创建命令时,请为其指定-bang选项,然后使用<bang>,这将扩展为爆炸或什么都没有。然后,要将其重定向到您的函数,请创建一个特殊参数并对其进行分析以查看它是否包含爆炸。这样的事情:(包括ZyX建议的那样)

function! Bang(bang)
    echo "With".((a:bang)?"":"out")." bang."
endfunction

command! -bang Bg call Bang(<bang>0)

当然,我没有在这里做正确的测试,以检查a:bang是否真的是一声巨响,但你明白了。

:Bg
Without bang.  

:Bg!
With bang.