我理想的情况是将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] 举报,一经查实,本站将立刻删除。