从 VIM 中的别名调用函数会导致 ' 意外标记附近出现语法错误 `('?
Calling a function from an alias in VIM results in ' syntax error near unexpected token `('?
我有一个别名 alias new='misc.sh new'
,可以在 shell 中正常工作。脚本 misc.sh 有几个函数,一个名为 'new'。当从 vim :! new arg
调用别名时,我收到此语法错误:
syntax error near unexpected token `('
这是脚本中的第一个函数misc.sh,语法错误指向这个函数。不过我不认为问题出在这个函数上。
#!/usr/bin/env bash
updatem(){ #both
#update all python modules
echo 'Outdated packages are'
pip3 list --outdated
for p in $(pip3 list -o --format freeze); do pip3 install -U ${p%%=*}; done
}
OUT=$(date +%m-%d-%H-%M-%S)
tags(){ #both
echo 'Another function'
}
new(){
echo 'This is my function'
}
我已经试过了,但还是不行:
new(){ misc.sh new; }
我不知道为什么它在命令行中可以正常工作,但在 vim 中却不行。
在与 OP 合作后,我们发现 OP 在多个地方出现了重复的、冲突的名称。例如,在一个地方 alias new
在 .bash_aliases
中使用,并且在 bash 脚本中单独定义了一个函数 new()
。
解决方案是重命名函数的别名以避免冲突。
我有一个别名 alias new='misc.sh new'
,可以在 shell 中正常工作。脚本 misc.sh 有几个函数,一个名为 'new'。当从 vim :! new arg
调用别名时,我收到此语法错误:
syntax error near unexpected token `('
这是脚本中的第一个函数misc.sh,语法错误指向这个函数。不过我不认为问题出在这个函数上。
#!/usr/bin/env bash
updatem(){ #both
#update all python modules
echo 'Outdated packages are'
pip3 list --outdated
for p in $(pip3 list -o --format freeze); do pip3 install -U ${p%%=*}; done
}
OUT=$(date +%m-%d-%H-%M-%S)
tags(){ #both
echo 'Another function'
}
new(){
echo 'This is my function'
}
我已经试过了,但还是不行:
new(){ misc.sh new; }
我不知道为什么它在命令行中可以正常工作,但在 vim 中却不行。
在与 OP 合作后,我们发现 OP 在多个地方出现了重复的、冲突的名称。例如,在一个地方 alias new
在 .bash_aliases
中使用,并且在 bash 脚本中单独定义了一个函数 new()
。
解决方案是重命名函数的别名以避免冲突。