我正在尝试在当前缓冲区和其savefile之间运行diff。因为我想对diff输出进行一些处理,我需要它在一个变量中,而不是一个新的缓冲区。我知道一种方法是使用
w !diff % - > tmpfile
let myvar = system( cat tmpfile )
还有更优雅的方式吗?
答案 0 :(得分:0)
假设您能够编写缓冲区,您可以执行类似
的操作:let @a=system('diff ' . shellescape(expand('%')) . ' ' . shellescape(expand('%')) . '~')
例如比较buffer.txt到buffer.txt~并将结果放入 register a
否则,请尝试
:let @a=""
:redir @A
:%w !diff - "%~"
:redir END
在我的初步测试中,这似乎不适用于Win32 GVIM。您可能需要通过临时文件才能使其正常工作
我意识到这一切看起来都和你尝试过的一样。无论如何,希望它有所帮助,也许确认你的想法