Я пишу инструмент vimscript, который позволит мне просматривать git diff из моего текущего сеанса vim, вызывая git difftool. Это прекрасно работает, когда я жестко кодирую два значения ша, но не удается, когда я пытаюсь указать их как переменные Я написал двухстрочный сценарий оболочки 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