如何让vim找到/home/lib/work.sh中的函数?

How to make vim find the function in /home/lib/work.sh?

我的/home/lib/work.sh

里面有个函数
test(){
echo "it is a test"
}

在我的 .bashrc 中

source  /home/lib/work.sh

现在我可以在终端中调用测试功能了。
vim 无法调用测试函数。

:!test
/bin/bash: test: command not found
shell returned 127

如何让vim找到/home/lib/work.sh中的函数?

test 是内置命令的名称(参见:help test)。我建议将您的函数重命名为 mytest 并将其添加到 /home/lib/work.sh:

中的函数之后
export -f mytest

参见:help export

您可以在 bash 个启动文件中定义 shell 个函数。 假设你以图形模式登录,相关文件是~/.bashrc:

new_test() {
echo "it is a test."
}
export -f new_test

(正如其他人已经指出的,使用 "test" 关键字作为名称是个坏主意)。

开始新的 shell 或执行

source ~/.bashrc 

在您当前的 shell 中启用新功能。

如果您 运行 printenv 命令,您将看到 new_test 现在已在您的用户环境中定义,它可以被其他程序访问,例如 vim。

BASH_FUNC_new_test%%=() {  echo "it is a test."
}