Vim函数将突出显示的文本发送到Git提交

时间:2016-02-19 15:53:13

标签: git vim viml

问题:

假设我的vim缓冲区中有以下文本:

~/my_repo

假设我有一个位于:'<,'>Commit ~/my_repo 的git仓库。

目标:创建一个vim脚本,以便我可以突出显示上面的文本,并将其作为git commit消息发送到function! GitLocations() return find $HOME -name '.git' -printf '%h\n' "generates a list of all folders which contain a .git dir endfunction 中。它看起来像

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

它的repo参数也会自动完成。

尝试解决方案:

首先,自动完成功能(AFAIK我认为这样可以吗?):

CommitTextGitRepo()

接下来,实际的git commit函数,它是不完整的:

command! -nargs=* -complete=custom,GitLocations -range Commit call CommitToGitRepo(<line1>, <line2>, <q-args>)

假设我可以弄清楚如何让$CI =& get_instance(); $CI->load->model('form_validation_callback_library'); $config['client_details'] = array( array( 'field' => 'client_abn', 'label' => 'Client ABN', 'rules' => array('trim', 'required', array('abn_callable', array($CI->form_validation_callback_library, 'abn_check'))), 'errors' => array('abn_callable' => 'Invalid ABN has been entered %s.') ) 在上面工作,我最不需要的就是这个(我认为):

sudo apt-get install xilinx

我太近了。我该如何完成? :)

1 个答案:

答案 0 :(得分:1)

join(getline(a:l1, a:l2),"\n")

应该做的伎俩 我宁愿使用一个局部变量,你可能想要使该函数接近这个

的消息
function! CommitTextGitRepo(l1, l2, loc)
  let l:msg = join(getline(a:l1,a:l2), "\n")
  execute '!cd ' . a:loc . '&& git commit --allow-empty -m ' . shellescape(l:msg)
endfunction

http://vimhelp.appspot.com/eval.txt.html#shellescape%28%29