访问Vim中Bash脚本的返回值

时间:2014-05-01 18:54:21

标签: linux bash shell vim

我希望在我的.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函数中使用它?

1 个答案:

答案 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中获取。