如何在保存Vim后自动评估脚本并将结果放入现有窗口?
发布时间:2020-12-15 20:58:03 所属栏目:安全 来源:网络整理
导读:我理想的情况是将Vim分成两个窗口 – 首先包含我正在处理的脚本( python),另一个显示评估该脚本的结果.这是我到目前为止: :autocmd BufWritePost *.py redir @p | execute 'silent w !python -' | redir END 保存脚本时,脚本的内容通过管道输出到python命令
我理想的情况是将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 可能有一种不那么冗长的方式来实现这一点,但它似乎工作得很好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |