我希望在我的.vimrc中有一个函数来运行bash脚本,检查输出,并根据bash脚本输出执行不同的操作。
目前,我的bash脚本返回“yes”。我的vim函数是:
function! Callscript()
if 'r ! . test.sh' == 'yes'
echom "returned yes"
else
echom "returned something else"
endif
endfunction
这将始终打印“返回其他内容”。当我运行命令':r! 。 test.sh',它返回:
test.sh: line 5: return: yes: numeric argument required
我没有看到任何内容:帮助r!提到做任何额外的事情以获得返回值,但我尝试了:
if 'r ! . test.sh'.return == 'yes'
if 'r ! . test.sh':return == 'yes'
这给了我错误。我尝试过使用系统,但无法使用它。我用系统尝试的最明显的方法是:
if system('r ! . test.sh') == 'yes'
当我在编辑器中尝试系统('。test.sh')时,它告诉我系统不是编辑器命令。
如何访问bash脚本的返回值,以便我可以在vim函数中使用它?
答案 0 :(得分:2)
if 'r ! . test.sh' == 'yes'
这种语法是无稽之谈。首先,:r !{cmd}
正在将{cmd}
的输出读入当前缓冲区,这可能不是您想要的。要将此变为变量,请使用:let output = system('test.sh')
,或直接比较:
if system('test.sh') == 'yes'
请注意,比较输出(特别是如果它是您的问题所建议的真/假或成功/失败布尔值)是不寻常的。而是检查脚本的退出状态(例如,使用grep
之类的命令)。你可以通过特殊的v:shell_error
变量(由system()
和:r !
填充)在Vim中获取。