如何在Vim中访问修改后的缓冲区的内容?
例如,如果我想将内容连接到临时文件,例如:
:! cat % > /tmp/modified.txt
但是这给了我最后保存的文件内容(这是正确的吗?)。我确实希望避免之前保存文件,因为此交互意味着允许进行一些分析而不先保存缓冲区。
似乎Vim的Python扩展允许你做类似的事情:
def buffer_contents(buffer=vim.current.buffer):
contents = buffer[:]
但我找不到任何VimL
引用相同的功能。
:let buffer_contents = join(getline(1, '$'), '$')
此时我只是想知道是否有内置方法。
答案 0 :(得分:2)
如果要将当前内容附加到临时文件,可以使用
:w! >> /tmp/modified.txt
,
:w! > /tmp/modified.txt
用于覆盖该文件(如在您的cat示例中)。将它传递给某些脚本的stdin
:w !some-script
。想知道你的getline(1, '$')
是什么问题?
答案 1 :(得分:1)
虽然您可以使用getline(1, $)
检索缓冲区中的所有(修改过的)行,但当您的目标是将它们写入文件时,根据ZyX的答案,:w! > filename
仍然是可行的方法。虽然在Vimscript中有一个writefile()
函数,你必须自己处理编码,行结尾等等,当内置的:write
可以做到这一点时,这太简单了对你而言。