让我跳进去吧。Vim在标准输出上打印缓冲区名称:q
我想要做的只是在退出vim时打印出任何打开的缓冲区的文件路径。这很有用,因为我经常在vim脚本中打开其他文件,并使用我编写的可以通过我的代码库搜索特定函数调用的vim脚本。
我想我可以设置一个自动命令,无论是当我打开一个文件或当我离开vim,并使用:ls
的输出来列出当前打开的所有缓冲区。我遇到的问题是我无法获得任何输出以显示在终端中。我在我的功能尝试了各种组合:!echo
,但无济于事。我一直在试图像下面这样在我的.vimrc
function! PrintFileName()
:!echo "hello"
:exec "!echo world"
"... etc
endfunction
au BufRead * call PrintFileName()
两个:!echo foobar
和我:call PrintFileName()
工作,如果我在命令行中做到这一点。我也想我可能不得不使用某种形式的沉默/重绘!所以我不必打进去继续。
真的,这里的主要问题是,我看不到从我的函数内部获取输出到标准输出的方式,并且被自动命令调用。
感谢您的任何帮助。
我不能真的想到一个很好的方法来做到这一点,除了用包装脚本等相当丑陋的黑客...除了Vim处理标准输出,你也有Vim的终端绘图代码干扰。你想要的是在代码完成清理之后'echo' * – Carpetsmoker
最简单的方法是将该缓冲区列表保存到一个文件中,然后在你的vim会话终止后'cat'该文件。但我必须承认,我没有看到任何有用的应用程序。为什么要让vim在缓冲区列表上做些什么? –
@LucHermitte我经常需要在我刚刚编辑的文件上运行实用程序,并且在终端中有一个列表将非常好。当然,我可以在vim中做到这一点,但是我真的在编辑这些文件,并且在那里运行并不有用。 – mrfred