我正在尝试在Vim中实现一个布尔函数并遇到一些麻烦,我确信有些东西我不知道。
为了清楚起见,我正在寻求实现一个函数,当使用!
调用时,它会做相反的事情。
Vim有很多布尔函数,比如list
和paste
。在我的情况下,如果我有一个函数说,打开一个缓冲区,如:
:call MyFunction()
然后我希望在使用!
:
:call MyFunction()!
不确定这是否可行,我不是要找出如何打开或关闭缓冲区,而是实际的布尔实现。
编辑:
如果我们谈论用户定义的命令,这似乎更可行,例如:
:MyCommand action
也可以称为:
:MyCommand action!
答案 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.