如何在VIM中读取和/或保存Python输出

时间:2013-08-14 18:42:15

标签: python vim

我是VIM的新手,并且正在使用此命令保存并运行Python脚本:

:w !python

但是,我不能上下移动来读取输出。我给出的唯一选择是按回车或输入命令。我试图猛拉(:%y+)所有内容,但实际代码被拉出而不是输出。我希望能够读取VIM中显示的所有输出,更好的是打开带有输出的新选项卡,并能够搜索和读取所有输出。

2 个答案:

答案 0 :(得分:2)

您可以像往常一样使用重定向将运行脚本的python输出写入不同的文件。例如:

:w !python > temp

然后

:tabnew temp

不确定是否有办法将输出直接写入另一个缓冲区。

另一种选择是将脚本保存到文件(例如“script.py”),然后切换到要查看输出的其他缓冲区,然后将其过滤为:

:%!python script.py

它将用脚本的输出替换缓冲区的全部内容。

答案 1 :(得分:0)

将此功能放在vimrc中。 它将打开一个窗口,其中包含捕获的输出(对于任何命令,而不仅仅是python)。

function! Redir(cmd)
  for win in range(1, winnr('$'))
    if getwinvar(win, 'scratch')
      execute win . 'windo close'
    endif
  endfor
  if a:cmd =~ '^!'
    let output = system(matchstr(a:cmd, '^!\zs.*'))
  else
    redir => output
    execute a:cmd
    redir END
  endif
  botright vnew
  let w:scratch = 1
  setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap
  call setline(1, split(output, "\n"))
endfunction
"`:Redir` followed by either shell or vim command
command! -nargs=+ -complete=command Redir silent call Redir(<q-args>)

也在vim中执行:help python。 也有python插件。