微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在保存Vim后自动评估脚本并将结果放入现有窗口?

我理想的情况是将Vim分成两个窗口 – 首先包含我正在处理的脚本( python),另一个显示评估该脚本的结果.这是我到目前为止:

:autocmd BufWritePost *.py redir @p | execute 'silent w !python -' | redir END

保存脚本时,脚本的内容通过管道输出到python命令,该命令的输出存储在寄存器p中.将p放入另一个窗口中显示的新/空缓冲区的最佳方法是什么?

我尝试过的一些事情就是爆炸正常! “pp | bfirst(blast:new / empty buffer,bfirst:包含python脚本的缓冲区)但是这似乎让我处于”输出“缓冲区中,无论出于何种原因我都失去了语法高亮,需要在缓冲区之间来回切换我真的想这样做,并避免生成临时转储文件,我管道运行脚本的输出,并宁愿避免使用任何其他外部工具来“观察”python脚本文件并做当它发生变化时.

解决方法

我的方法是使用预览窗口.这使您可以随时移动到正确的窗口,无论您有多少窗口.它还允许您“忽略”当您想要退出vim时预览窗口打开的事实(您可以这样做:q而不是:qa例如).

autocmd BufWritePost *.py call Outputwindow("python")
autocmd BufWritePost *.rb call Outputwindow("ruby")

function Outputwindow(executable)
    let filename=expand('%:p')

    " move to preview window and create one if it doesn't
    " yet exist
    silent! wincmd P
    if ! &previewwindow
        " use 'new' instead of 'vnew' for a horizontal split
        vnew
        set previewwindow
    endif

    execute "%d|silent 0r!" . a:executable . " " . filename
    wincmd p
endfunction

可能有一种不那么冗长的方式来实现这一点,但它似乎工作得很好.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐