我正在编写一个 vimscript 工具,通过调用 git difftool 命令,让我可以在当前的 vim 会话中查看 git diffs。当我硬编码两个 SHA 值时,这个工具可以正常工作,但是当我尝试将它们指定为变量时,就会失败。我编写了一个两行的 shell 脚本 do_git_difftool 来探究问题所在,它显示传递的是文字字符串 "l:left_sha" 和 "l:right_sha",而不是它们代表的变量值,尽管在前一行的 echom 命令中它们已经被正确解释了。这是怎么回事?
function! s:GitDiff (...)
let l:the_count = 1
:let l:syscommand = "get_sha back " . l:the_count
:let l:left_sha = system(l:syscommand)
:let l:syscommand = "get_sha top"
:let l:right_sha = system(l:syscommand)
echom "sha values" l:left_sha l:right_sha
:silent !git difftool l:left_sha l:right_sha
:silent !do_git_difftool l:left_sha l:right_sha
endfunction
# in a bash script named do_git_difftool
echo args are $1 and $2 > thelog
git difftool $1 $2
in the log file I see:
args are l:left_sha and l:right_sha