问题:
假设我的 vim 缓冲区中有以下文本:
This is a commit msg.
进一步假设我有一个位于~/my_repo
.
目标:制作一个 vim 脚本,以便我可以突出显示上面的文本,并将其作为 git commit 消息发送到~/my_repo
. 它看起来像
:'<,'>Commit ~/my_repo
它还将在其 repo 参数上自动完成。
尝试的解决方案:
首先,自动完成功能(AFAIK,我认为这可以吗?):
function! GitLocations()
return find $HOME -name '.git' -printf '%h\n' "generates a list of all folders which contain a .git dir
endfunction
接下来是实际的 git commit 函数,不完整:
function! CommitTextGitRepo(l1, l2, loc)
let s:msg = ??? " how do I make this the highlighted text from line l1 to line l2?
execute '!cd ' . a:loc . '&& git commit --allow-empty -m \"' . s:msg '\"'
endfunction
假设我可以弄清楚如何CommitTextGitRepo()
在上面工作,我需要的最后一件事是(我认为):
command! -nargs=* -complete=custom,GitLocations -range Commit call CommitToGitRepo(<line1>, <line2>, <q-args>)
我是如此接近。我该如何完成这件事?:)