alf*_*eza 5 vim boolean function
我正在尝试在Vim中实现布尔函数,并且遇到了一些麻烦,并且我确定我缺少某些东西。
只是要清楚一点,我正在寻求实现一个函数,当调用!它时,它会起到相反的作用。
Vim有很多布尔函数,例如list和paste。就我而言,如果我说一个函数,则打开一个缓冲区,例如:
:call MyFunction()
Run Code Online (Sandbox Code Playgroud)
然后我想在用a调用时关闭缓冲区!:
:call MyFunction()!
Run Code Online (Sandbox Code Playgroud)
不知道这是否有可能,我不希望找到如何打开或关闭缓冲区,而是真正的布尔实现。
编辑:
如果我们谈论用户定义的命令,这似乎更可行:
:MyCommand action
Run Code Online (Sandbox Code Playgroud)
也可以称为:
:MyCommand action!
Run Code Online (Sandbox Code Playgroud)
创建命令时,为其提供-bang选项,然后使用<bang>,它将扩展为爆炸状或不显示任何内容。然后,要将其重定向到您的函数,请创建一个特殊的参数并对其进行分析,以查看其是否包含爆炸。这样的事情:(包括ZyX建议的内容)
function! Bang(bang)
echo "With".((a:bang)?"":"out")." bang."
endfunction
command! -bang Bg call Bang(<bang>0)
Run Code Online (Sandbox Code Playgroud)
当然,我没有在这里进行正确的测试来检查是否a:bang真的很不错,但是您知道了。
:Bg
Without bang.
Run Code Online (Sandbox Code Playgroud)
:Bg!
With bang.
Run Code Online (Sandbox Code Playgroud)