在我的项目回归设置中,输出文件具有类似
的语句 "diff between foo.txt and bar.txt found"
现在我需要在foo.txt和bar.txt之间使用vimdiff。我可以从仅在vim中打开的输出文件中执行此操作吗?
目前我需要先在vim中打开输出文件。然后我需要选择指定diff found的行。在它返回shell之后。然后把vimdiff b / w这个文件。
答案 0 :(得分:2)
您可以使用以下函数在不打开任何新vim实例的情况下执行此操作:
function s:OpenDiff()
let line=getline('.')
let match=matchlist(line, '\v^\ {4}\"diff\ between\ (.{-})\ and\ (.{-})\ found\"\ $')[1:2]
if empty(match)
throw 'Incorrect line:' line
endif
execute 'tabedit' fnameescape(match[0])
execute 'diffsplit' fnameescape(match[1])
endfunction
nnoremap ,od :<C-u>call <SID>OpenDiff()<CR>
如果您在每个set bufhidden=wipe
语句后添加execute
,则可以通过运行:tabclose
来删除已打开的缓冲区。
答案 1 :(得分:1)
如果您没有打开文件或未修改缓冲区:
:edit file1.txt
:vert diffsplit file2.txt
要在新标签中打开差异,
:tabedit file1.txt
:vert diffsplit file2.txt
会很方便
为了让事情自动化,我会考虑
diffprogram | grep -w '^diff between' | grep 'found$' |
while read diff between file1 and file2 found;
do
gvim -d "$file1" "$file2"
done
注意:
&
:gvim -d "$file1" "$file2"&
您还可以在单个vim中的单独选项卡中打开所有差异:
gvim --servername GVIM --remote-silent +"tabedit $file1" +"vert diffsplit $file2"