0

如何在 Vim 中访问修改后的缓冲区的内容?

例如,如果我想将内容连接到一个临时文件,例如:

:! cat % > /tmp/modified.txt

但这给了我最后保存的文件内容(对吗?)。我确实想避免之前保存文件,因为这种交互是为了在不先保存缓冲区的情况下进行一些分析。

似乎 Vim 的 Python 扩展允许您执行以下操作:

def buffer_contents(buffer=vim.current.buffer):
    contents = buffer[:]

但我找不到VimL相同功能的任何参考资料。

编辑:看来我可以做类似的事情:

:let buffer_contents = join(getline(1, '$'), '$')

在这一点上,我只是想知道是否有内置方法。

4

2 回答 2

2

如果要将当前内容附加到临时文件,可以使用

:w! >> /tmp/modified.txt

,

:w! > /tmp/modified.txt

用于覆盖该文件(例如在您的 cat 示例中)。将其传递给某些脚本的标准输入

:w !some-script

. 想知道你有什么问题getline(1, '$')吗?

于 2012-11-18T18:43:17.743 回答
1

虽然您可以使用getline(1, $)检索缓冲区中的所有(修改的)行,但当您的目标是将它们写入文件时,:w! > filename按照 ZyX 的答案仍然是要走的路。尽管writefile()Vimscript 中有一个函数,但您必须自己处理编码、行尾等,而当内置程序:write可以为您完成时,这太麻烦了。

于 2012-11-18T19:36:27.017 回答