function vi_diff_files() {
local ref=$1
# error here
# 去掉local 可以正常运行, 但会污染所在终端内的 file_list 变量
# 上面的 $ref 可以正常使用
local file_list=$(git diff "${ref}" --name-only | tr ' ' '\ ' | tr '\n' ' ')
if [[ ! "$file_list" ]]; then
echo "empty file list to edit"
return 2
fi
vim --cmd "args ${file_list}"
}
提问者想通过上面的函数 用vim打开 git diff HEAD* 后的文件列表
zsh 中执行 :vi_diff_files 时, 报错 vi_diff_files:local:13: not valid in this context: ...
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
local file_list="$(git diff "${ref}" --name-only | tr ' ' ' ' | tr 'n' ' ')"
测试了下题主的脚本bash没问题,在zsh下报跟题主一样的错误。